在了解了java的集合根接口Collection之后,今天来说一下它的的一大子接口list集合以及其常用的子接口。
list集合位于java.util.List包中,相比数组无法确定有效元素这一弊端,List系列集合存在索引值这一概念。因此该集合存储的元素特点是有序的,并且允许有重复元素。
而list集合又有几个常用的实现类:ArrayList、LinkedList、Vector,vector集合不常用了,就主要说一说
ArrayList和LinkedList。
ArrayList:位于java.util.ArrayList包中,该集合采用的是数组结构存储元素,所谓数组结构存储元素,可以用一副简单的图来表示:
上图是一个存储了5个元素的ArrayList,索引值从0-4,当我们查询某个数据时,程序根据其索引取出相应的值,而当我们对其中某个元素进行增加或者删除时,该元素相邻的元素索引会随之变化,比如对第二个元素进行删除,第三个元素会移动至第二个元素的位置上,并将索引变为1,后续的元素索引也依次进行变化,这也就说明ArrayList适用于查询操作,而不适用修改操作。
由于List集合继承自Collection集合,这里就说一说List集合独有的方法:
collection集合中有add(E e)方法,用于给集合添加指定的元素,而由于List集合存在索引值,提供了一个add(int index,e Element)的方法,用于在指定的索引中添加指定元素:
List list=new ArrayList();
list.add("AA");
list.add("BB");
list.add("CC");
list.add(1,"DD");
System.out.println(list);
运行结果:
类似的,还有addAll(int index,Collection<? extends E> c)方法,在指定的索引位置添加集合中的全部元素:
List list2=new ArrayList(