List接口继承自Collection接口,Collection接口下分为列表List和集Set,List与Set相比,特点是“有序 有索引 元素可重复”。
List接口的实现类有 ArrayList LinkedList
List接口除了继承Collection的方法外,其自身还有特有的方法,带索引的方法
1. add(int index, E);
将元素插入到指定索引上,注意越界异常
List li = new ArrayList();
li.add("abc1");
li.add("abc2");
li.add(0,"abc3");
2. remove(int index);
移除指定索引上的元素,返回被移除的元素
List li = new ArrayList();
li.add(1);
li.add(2);
li.remove(0);
3.set(int index,E);
修改指定索引上的元素,返回修改之前的元素
List li = new ArrayList();
li.add(1);
li.add(2);
li.set(0,5);
二、关于越界异常,
1. StringIndexOutOfBoundsException 字符串越界异常
2. ArrayIndexOutOfBoundsException 数组索引越界异常
3. IndexOutOfBoundsException 集合索引越界异常
三、集合的三种遍历方式
List li = new ArrayList();
li.add("a");
li.add("b");
1. 带索引的for循环
for(int i = 0; i
System.out.println(li.get(i));
}
2. 增强for
for(String str:li){
System.out.println(str);
}
3. 迭代器
Iterator it = li.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
四、 迭代器并发修改异常ConcurrentModificationException ,一般是在迭代的同时,修改了集合的长度
List li = new ArrayList();
li.add("abc1");
li.add("abc2");
li.add("abc3");
Iterator it = li.iterator();
while(it.hasNext()){
if(it.next().equals("abc1")){
li.set(0,"aaa"); //未修改长度,可执行
li.add("ABC");//修改了集合的长度,报并发修改异常
}
}