下面具体总结一下关于几种集合:
第二节 List集合 一、概述: List集合包含三个子类:ArrayList、LinkedList以及Vector等。 具体区别如下: 1、ArrayList:底层的数据结构时数组结构 特点:查询速度很快,因为有索引(角标),但增删速度稍慢。是线程不同步的。 2、LinkedList:底层使用的是链表数据结构 特点:增删速度很快,但查询速度稍慢,因为每一个元素都链接到前一元素。 3、Vector:底层是数组结构,JDK1.0出现,比较老。 特点:增删查询都很慢,被ArrayList替代了,线程是同步的。 二、对于List集合特有的方法: 凡是可操作角标的方法都是该体系特有的方法,基本方法和Collection中的一样。 1、增加: add(int index,e); -----> 在指定位置增加给定的元素 addAll(int index,Collection); -----> 在指定位置增加给定集合中的所有元素,若省略位置参数,则在当前集合的后面依次添加元素 2、删除: remove(int index); -----> 删除集合中指定位置上的元素 3、修改: set(int index,e); -----> 将指定位置(index)上的元素修改为给定的参数e 4、查询: get(int index); -----> 获取指定位置上的元素 indexOf(e); -----> 通过指定元素获取其在集合中的位置 subList(int from,int to); -----> 获取从from到to位置上的元素 Iterator listIterator(); -----> 返回Iterator接口类型值 注: 1、listIterator是List特有的迭代器,是Iterator子接口。在迭代时,不可通过集合对象的方法操作集合中的元素,因为会发生ConcurrentModficationException异常。所以,在迭代时,只能用迭代器的方法操作,可Iterator方法是有限的,若想要其他操作如增删改写等,就需要使用子接口,即ListIterator,该接口只能通过List集合的listIerator方法获取。 2、在迭代时,循环中的next()调用一次,就要对hasNext判断一次,不可判断一次调用两次。 3、List集合判断元素是否相同,一句的是元素的equals方法,其中,contains中就是调用的equals方法。 三、Vector类: Vector中有种特殊的取出方式,即为枚举 1、枚举和迭代器十分相似,其实两者是一样的,由于枚举的名称以及方法名都过长,因此,就被迭代器取代了。这里就不过多的介绍了。 四、LinkedList类特有方法: 一)JDK1.6之前的方法 1、增加: addFirst(obj); -----> 在集合头部添加给定的元素 addLast(obj); -----> 在集合尾部添加给定的元素 2、获取: getFirst(); -----> 获取集合第一个元素,若集合中没有元素,则出现NoSuchElementException getLast(); -----> 获取集合最后一个元素,若集合中没有元素,则出现NoSuchElementException 3、删除: removeFirst(); -----> 获取并删除集合第一个元素,若集合中没有元素,则出现NoSuchElementException removeLast(); -----> 获取并删除集合最后一个元素,若集合中没有元素,则出现NoSuchElementException 二)JDK1.6出现的替代方法: 1、增加: offerFirst(obj); -----> 在集合头部添加给定的元素 offerLast(obj); -----> 在集合尾部添加给定的元素 2、获取: peekFirst(); -----> 获取集合第一个元素,若集合中没有元素,则返回null peekLast(); -----> 获取集合最后一个元素,若集合中没有元素,则返回null 3、删除: pollFirst(); -----> 获取并删除集合第一个元素 ,若集合中没有元素,则返回null pollLast(); -----> 获取并删除集合最后一个元素,若集合中没有元素,则返回null
|