Collection集合:
①ArrayList:比Vector速度快,默认扩容1.5倍
ArrayList<Integer> q1 = new ArrayList<>();
q1.add(11);
q1.add(22);
//ArrayList(集合/动态数组) :支持自动改变大小,对于增删慢,查找快
ArrayList<Integer> data = new ArrayList<>();//默认构造一个10空间的数组,如果存储满,将按照1.5倍扩容
System.out.println("此时列表中有数据吗?如果没有请输出true:"+data.isEmpty());//如果此列表不包含任何元素,则返回 true 。
boolean a1 = data.add(100);//默认在列表尾部添加数据,此时100在0坐标
System.out.println("a1添加成功了吗?"+a1);//是否添加成功
boolean a1copy = data.add(100);//可以重复添加
System.out.println("a1copy添加成功了吗?"+a1copy);//是否添加成功
data.add(0,198);//在下标0下存储数据198,100为1坐标
data.addAll(1,q1);//从1位置添加q1列表的数据,100为3坐标
boolean a2 = data.contains(11);
System.out.println("列表中是否含有数字11?"+a2);
data.ensureCapacity(10);//将列表扩容到20
Integer a3 = data.get(0);//返回下标为数字8的数据
System.out.println("此时0下标是数据为"+a3);
int a4 = data.indexOf(100);
System.out.println("数据100此时的坐标为"+a4);
int a5 = data.set(3,200);//用数据200替换下标为3的100
System.out.println("被替换的数据为"+a5);
data.remove(1);//删除下标为1的数据11
int a6 = data.lastIndexOf(11);//返回此列表中指定元素最后一次出现的索引,如果此列表不包含该元素,则返回-1。
System.out.println("11是否存在"+a6);//因为11被remove所以输出-1
int size = data.size();//返回数组列表中的元素数
System.out.println("列表中共有几个数据"+size);
System.out.println(data);//输出data数据
data.clear();//清空数据
System.out.println(data);//输出data数据
运行结果:
②Vector:大部分和ArrayList差不多,Vector是同步的,和ArrayList相比线程更安全一些,存取数据时和ArrayList一样,扩容增量为0,需要指定扩容量,如果扩容增量为0,默认扩容翻一倍
③LinkedList:双向链表,增删快,查找慢
LinkedList<Integer> data = new LinkedList<>();
data.add(1);
data.addFirst(0);//在链表首部添加0
data.addLast(2);//在链表尾部添加2
System.out.println(data);
Integer i = data.removeFirst();//删除链表首部元素
System.out.println("链表首部被移除的元素是"+i);
System.out.println(data);
data.clear();
//压栈
data.push(996);
data.push(355);
System.out.println(data);
//弹栈
data.pop();
System.out.println(data);//先进后出
运行结果: