1 List集合
(1)有序集合(也称为序列),可以精确控制列表中每个元素的插入位置,可以通过整数索引访问元素。
与Set集合不同,存储的元素可以重复。
(2)List集合的特有方法
void add(int index,E element) 指定位置插入指定的元素
E remove(int index) 删除指定索引处的元素,返回被删除的元素
E set(int index,E element) 修改指定索引处的元素,返回被修改的元素
E get(int index) 返回指定索引处的元素
2 并发修改异常ConcurrentModificationException
(1)产生原因:
迭代器遍历过程中修改了集合中元素的长度,造成迭代器获取元素中判断预期修改值和实际修改值不一致
(2)解决方法:使用for循环遍历
3 ListIterator列表迭代器
(1)通过List集合的listIterator()方法得到,它是List集合特有的迭代器。
(2)用于允许程序员沿任一方向遍历列表的列表迭代器,在迭代期间可以修改列表(不会产生并发修改异常),并获取迭代器当前的位置。
示例:
List<String> l = new ArrayList<String>();
l.add("床前明月光");
l.add("疑是地上霜");
l.add("举头望明月");
l.add("低头思故乡");
ListIterator<String> listIterator = l.listIterator();
while (listIterator.hasNext()){
if(!listIterator.hasPrevious()){
listIterator.add("静夜思");
listIterator.add("李白");
}
if(listIterator.next().equals("疑是地上霜")){
listIterator.set("地上鞋两双");
}
}
System.out.println(l);
4 增强for循环:内部原理是一个Iterator迭代器
格式:
for(数据类型 变量名:数组或Collection集合){
}
示例:
List<String> list = new ArrayList<String>();
list.add("郎骑竹马来");
list.add("绕床弄青梅");
list.add("同居长干里");
list.add("两小无嫌猜");
for(String str:list){
System.out.println(str);
}
5 List集合子类
ArrayList:底层数据结构是数组,查询快,增删慢
LinkedList:底层结构是链表,增删快,查询慢
6 LinkedList集合的特有功能
public void addFirst(E e)
public void addLast(E e)
public E getFirst()
public E getLast()
public E removeFirst()
public E removeLast()