一、List集合
1.1 List 概述
** List 是一个有序集合(也称为序列),用户可以精确控制列表中每个元素插入的位置,用户可以通过整数索引访问元素,并搜索列表中的元素
** 与Set集合不同,列表通常允许重复的元素
1.2 List 集合的特点
** 有序:存储和取出的元素顺利一致;
** 可重复:存储的元素可以重复;
1.3 List 集合的特有方法
| 方法 | 含义 |
| void add(int idexe,E element) | 在此集合中的指定位置插入指定的元素 |
| E remove (int index) | 删除指定索引处的元素,返回被删除的元素 |
| E set(int index, E element) | 修改指定索引处的元素,返回被修改的元素 |
| E get(int index, E element) | 返回索引处的值 |
1.4 并发修改异常,使用List类中的add会产生的异常
异常代码:ConcurrentModificantionExcetion;
产生原因:迭代器遍历的过程中,通过集合的对象修改了集合的元素的长度,造成了迭代器获取元素中判断预期修改值和实际修改值不一致。
解决方案,采用for循环遍历
报错案例
public class aa { public static void main(String[] args) { Collectionarr = new ArrayList (); //利用多态的方式创建对象arr arr.add("a1"); arr.add("a2"); arr.add("a3"); //add添加三个元素 Iterator iterator = arr.iterator(); //创建迭代器 while (iterator.hasNext()) { //判断下一个元素是否为null arr.add("dk"); //出错代码ConcurrentModificationException System.out.println(iterator.next()); //输出下一个元素 } for (String s : arr) { System.out.println(s); }} }
报错:ConcurrentModificationException
解决方式
public class aa { public static void main(String[] args) { Listarr = new ArrayList (); //利用多态的方式创建对象arr arr.add("a1"); arr.add("a2"); arr.add("a3"); //add添加三个元素 for (int i = 0; i < arr.size(); i++) { System.out.println( arr.get(i)); }} }
2.5 ListIterator 迭代器
ListIterator列表迭代器
| 方法 | 含义 |
| E next(); | 返回迭代中下一个元素 |
| boolean hadNext(); | 如果迭代具有更多元素,则返回true |
| E prevoius(); | 返回列表中的上一个元素 |
| boolean hasPrevious(); | 向相反方向遍历,检测是否有更多的元素 |
| void add(E e); | 将指定的元素插入列表 |
注:这里的add和上面迭代器iterator中使用的add不同,这里使用ListIterator,的运算,将实际修改值在修改后又重新赋值给了判断预期修改值,两者都可以在指定位置插入元素。
2.6 增强for 循环
增强for:简化数组和Collection集合的遍历
**实现 Iterable 接口的类允许其对象成为增强for语句的目标
**它是JDK5之后出现的,其内部原理是一个Iterater迭代器。
增强for的格式
格式: for(元素数据类型 变量名:数组或者Colection集合)
{//在此处使用变量即可,该变量就是元素}
例如: list.for
for(String s: list){sout (s);} // 输出list里面的元素
二、ArrayList2.1 ArrayList集合概述
——提供一种存储空间可变的存储模型,存储的容量可以发生改变
——是通过数组的形式存储元素的,即查询速度块,增删速度慢
ArrayList
可调整大小的数组实现
注:出现E的地方我们使用引用数据类型替换即可
2.2 创建对象:
ArrayList
sc=new ArrayList<>(); sc.add("add");//表示添加第一个元素add
sc.add("qqq")//表示添加第二个元素qqq
sc.add("rrrr")//表示添加第三个元素rrr
sc.add(1,"pppp")//表示在索引1处添加元素pppp,原有的元素依次往后移动
System.out.print(sc); 输出的是 [add,pppp,qqq,rrr]
2.3 基本方法
| 方法 | 含义 |
| add | 增加元素 |
| remove | 删除元素 |
| set(index, 元素) | 指定位置修改元素 |
| get(index ) | 得到指定位置的元素 |
| size() | 集合长度 |
| indexof() | 找指定元素的索引 |
三、linkedList 集合
3.1 概述
linkedList集合是通过链表的结构进行储存的,即查询速度慢,增删块
3.2 基本方法
| 方法 | 含义 |
| addFirst(E e); | 在列表开头位置插入指定的元素 |
| addLast(E e) | 在列表末尾位置插入指定的元素 |
| getFirst() | 得到首尾的元素 |
| getLast() | 得到最后一位元素 |
| removeFirst() | 删除首尾元素 |
| removeLast() | 删除末尾元素 |



