为了满足各种数据结构的需求,java提供了跟多重要的集合类。
每个集合类都有不同的特性,根据实际需求选择。
- ArrayList
ArrayList集合中引用一个内部数组,如果满了就创建一个更大的,并将之前较小的数组拷贝到大数组中。
特点:查询快,增删慢
ArrayList<String> list = new ArrayList<String>(); //初始容量为10
//添加一个元素,如果容量已满,增加当前一半的容量,再添加
list.add("0");
//使容量减少至和实际元素数相等
list.trimToSize();
//容量调整,参数为(当前容量+增加量),增加量小于0则不添加,增加量不足当前一半的,自动调整为增加一半,增加量大于一半则添加增加量的值
//例如:当前容量为10,输入9则容量为10,输入11则变为15,输入16则为16
list.ensureCapacity(16);
//返回集合实际元素数
list.size();
//获取指定位置的元素
list.get(0);
//替换位置上已存在元素的内容
list.set(0, "hello");
//指定位置上增加元素,其他元素会后移,会自动增加容量
list.add(1, "1");
//删除指定元素或指定位置元素,其他元素会前移
list.remove(0);
list.remove("1");
- LinkedList
LinkedList是一种链表结构,每个对象存放在独立的结点中,java中所有链表都是双向的,所以每个结点还保存着直接前驱和后继结点的引用。
特点:增删快,查询慢
- Vector
与ArrayList类似,增加了线程安全功能。