List动态数组中两个实现类:ArrayList和LinkedList的用法和区别

List

简介

List是一个动态数组,用户可以对插入元素的位置进行精确的控制,可以根据整数索引(index)获取序列中的元素,允许插入重复的值,包null值

常用的两个实现类:ArrayList、LinkedList

ArrayList

构造方法

  • public ArrayList():创建一个ArrayList对象

常用方法

  1. boolean add(E e);:添加元素
  2. void add(int index, E element);:向指定位置添加元素
  3. E get(int index);:获取指定位置的元素
  4. E set(int index, E element);:修改指定位置的元素
  5. int indexOf(Object o);:查找指定元素的位置
  6. boolean contains(Object o);:是否包含指定的元素
  7. boolean remove(Object o);:移除指定的元素
  8. E remove(int index);:移除指定位置的元素

foreach循环

List<String> list = new ArrayList<String>();
// 添加元素
list.add("张三");
list.add("李四");
list.add("王五");
// 使用foreach遍历
for (String str : list) {
    System.out.println(str);
}

List中存放自定义类型

class Person {
    private String name;
    private int age;

    //省略构造方法、set、get、toString
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Person other = (Person) obj;
        if (age != other.age)
            return false;
        if (name == null) {
            if (other.name != null)
                return false;
        } else if (!name.equals(other.name))
            return false;
        return true;
    }

}
List<Person> list = new ArrayList<Person>();
Person p1 = new Person("张三", 20);
Person p2 = new Person("张三", 20);
list.add(p1);
System.out.println(list.contains(p2));//true
System.out.println(list.indexOf(p2));//0

indexOf方法是使用equals比较两个对象是否相等

引用传递

List<String> list1 = new ArrayList<String>();
list1.add("张三");
list1.add("李四");
list1.add("王五");
List<String> list2 = new ArrayList<String>();
list2.addAll(list1);
//将List1中的张三删除
list1.remove("张三");
System.out.println(list1);
System.out.println(list2);

addAll方法将list1中的元素全部添加到list2

LinkedList

LinkedList是一个链表,实现了List接口

构造方法

  • public LinkedList():创建一个LinkedList对象

常用方法

  1. void addFirst(E e):在开始位置添加元素
  2. void addLast(E e):在最后位置添加元素
  3. E removeLast():删除最后的元素
  4. E removeFirst():删除开始位置的元素

ArrayList和LinkedList的区别

  1. 对应随机访问,ArrayList效率要高,因为ArrayList保存有下标
  2. 对应添加和删除,LinkedList效率高,因为ArrayList需要移动元素
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值