第三讲 List 一、List 组成 List:元素是有序的,元素可以重复。因为该集合体系有索引。 |--ArrayList:底层的数据结构使用的是数组结构。特点:查询速度很快。但是增删稍慢。线程不同步。 |--LinkedList:底层使用的是链表数据结构。特点:增删速度很快,查询稍慢。 |--Vector:底层是数组数据结构。线程同步。被ArrayList替代了。 二、List的特有方法 凡是可以操作角标的方法都是该体系特有的方法。 1、增 booleanadd(index,element);//指定位置添加元素 BooleanaddAll(index,Collection);//在指定位置增加给定集合中的所有元素,若省略位置参数,则在当前集合的后面依次添加元素 2、删 Booleanremove(index);//删除指定位置的元素 3、改 set(index,element);//修改指定位置的元素。 4、查 get(index);//通过角标获取元素 subList(from,to);//获取部分对象元素 5、其他 listIterator();//List特有的迭代器 indexOf(obj);//获取元素第一次出现的位置,如果没有则返回-1 注:List集合判断元素是否相同,移除等操作,依据的是元素的equals方法。 三、ListIterator 1、概述 ListIterator是List集合特有的迭代器,是Iterator的子接口。 在迭代时,不可以通过集合对象的方法操作集合中的元素。因为会发生ConcurrentModificationException异常。所以在迭代器时,只能用迭代器的方法操作元素。可是Iterator方法是有限的,只能对元素进行判断,取出,删除的操作。如果想要其他的操作,如添加、修改等,就需要使用其子接口:ListIterrator。该接口只能通过List集合的ListIterator方法获取。 2、ListIterator特有的方法 add(obj);//增加 set(obj);//修改为obj hasPrevious();//判断前面有没有元素 previous();//取前一个元素 四、枚举Enumeration 枚举: 就是Vector特有的取出方式。Vector有三种取出方式。 其实枚举和迭代是一样的。因为枚举的名称以及方法的名称都过长。所以被迭代器取代了。 特有方法: addElement(obj);//添加元素,相当于add(obj); Enumerationelements();//Vector特有取出方式(枚举) hasMoreElements();//相当于Iterator的hasNext()方法 nextElements();//相当于Iterator的next()方法 例: [java] view plaincopy
- Vector v=new Vector();
- for(Enumeration e=v.elements();e.hasMoreElements();)
- {
- System.out.println(e.nextElements());
- }
|