一、List接口
1、List集合的特有功能概述,其他的都继承自collection接口
- void add(int index,E element):在指定位置添加元素,会出现索引越界异常,0=<index<=size,其他都会出现异常
- Obj remove(int index):删除指定位置的元素,返回删除的元素。参数不能为元素,不会对元素进行自动装箱
- Obj get(int index):获取指定位置的元素,可以进行遍历,该方法是list特有的,其他集合没有索引
- set(int index, E element):修改指定位置的元素
2、并发修改异常产生的原因及解决方案
- 需求:我有一个集合,请问,我想判断里面有没有"world"这个元素,如果有,就添加一个"javaee"元素,请写代码实现。
Listlist = new ArrayList();
list.add("a"); //Object obj = new String();
list.add("b");
list.add("world");
list.add("d");
list.add("e");
Iterator it = list.iterator();
while(it.hasNext()){
Stringstr = (String)it.next();
if(str.equals("world")){
list.add("javaee"); //这里会抛出ConcurrentModificationException并发修改异常
}
}
- 并发修改异常ConcurrentModificationException:遍历的同时在增加元素,因为之前迭代器就认为该集合中有5个元素了,在下面操作的时候就不允许再添加元素了。
- 迭代器遍历,集合修改集合
- 解决方案
* 迭代器迭代元素,迭代器修改元素(ListIterator接口特有的功能add)
* 集合遍历元素,集合修改元素
ListIterator lit = list.listIterator(); //如果想在遍历的过程中添加元素,可以用ListIterator中的add方法
while(lit.hasNext()){
String str = (String)lit.next();
if(str.equals("world")){
lit.add("javaee");
//list.add("javaee");
}
}
二、ListIterator接口
- boolean hasNext():正向遍历,是否有下一个元素
- boolean hasPrevious():反向遍历,是否有前一个元素
注意:初始指针都是0,所以直接用hasPrevious时会判断没有元素。
- Object next():返回下一个元素
- Object previous():返回上一个元素
三、Vector类(后续补充)
1、概述:是JDK1.2版本之后,此类改进可以实现List接口。
2、Vector类特有功能
- public voidaddElement(E obj)
- public EelementAt(int index)
- publicEnumeration elements()
3、案例演示
* Vector的迭代
Vectorv = new Vector(); //创建集合对象,List的子类
v.addElement("a");
v.addElement("b");
v.addElement("c");
v.addElement("d");
//Vector迭代
Enumerationen = v.elements(); //获取枚举
while(en.hasMoreElements()){ //判断集合中是否有元素
System.out.println(en.nextElement());//获取集合中的元素
}