特点
有序,有重复
实现类
1.ArrayList
是一个基于数组的集合,其扩容策略为,默认为0,添加第一个元素直接扩展到10,此后每次扩容50%。
常用API
点击查看代码
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
list.add(100);
list.add(200);
list.add(300);
List<Integer> list2 = new ArrayList<Integer>();
list2.add(400);
list2.add(500);
list2.add(600);
list.addAll(list2);//加入另一个集合到末尾
list.add(0,-100);//指定位置插入
System.out.println(Arrays.toString(list.toArray()));
System.out.println("集合长度:"+list.size());
//一种快速创建集合的方法
List list3 = Arrays.asList(new Integer[]{
-300,
-200
});
list.addAll(0,list3);
//清空集合
// list.clear();
//删除指定位置的元素
// list.remove(-200);//可能会出现异常
System.out.println(Arrays.toString(list.toArray()));
//判断是否存在某个元素
System.out.println(list.contains(-200));
//判断是否为空
System.out.println(list.isEmpty());
//判断元素位置
System.out.println(list.indexOf(-200));
}
}
注意:当集合元素为整数时,删除元素可能会出现异常,因为删除指定元素时,会被认为删除元素的下标
2.LinkedList
双向链表:每次扩容增加一个对象,适合进行元素的增减,而不适合进行随机访问
常用API
点击查看代码
import java.util.Arrays;
import java.util.LinkedList;
public class Main3 {
public static void main(String[] args) {
LinkedList<String> ll = new LinkedList<>();
ll.addFirst("a");
ll.addLast("z");
System.out.println(ll.getFirst());
System.out.println(ll.getLast());
ll.removeFirst();
// ll.removeLast();
System.out.println(Arrays.toString(ll.toArray()));
// ll.removeLast();//空集合继续删除会报错
System.out.println(ll.peekLast());//验证不移除
System.out.println(Arrays.toString(ll.toArray()));
System.out.println(ll.pollLast());//验证并移除
System.out.println(Arrays.toString(ll.toArray()));
}
}