List接口
Collection接口是最基本的集合接口,可以存储一组不唯一、无序的对象
List接口继承自Collection接口,是有序集合
List接口的实现类
- ArrayList类
- LinkedList类
ArrayList类
ArrayList实现了长度可变的数组,在内存中分配连续的空间,遍历元素和随机访问元素的效率比较高。
```
1. ArrayList类是List接口的一个具体实现类
2. ArrayList对象实现了可变大小的数组
3. 随机访问和遍历元素时,它提供更好的性能
#### ArrayList常用方法

Collection接口常用通用方法还有:clear()、isEmpty()、iterator()、toArray()
import java.util.ArrayList;
public class Test {
public static void main(String[] args){
ArrayList list=new ArrayList();//①
list.add("张三丰");
list.add("郭靖");
list.add("杨过");
//判断集合中是否包含"李莫愁",对应步骤3
System.out.println(list.contains("李莫愁"));//输出false
//把索引为0的数据移除,对应步骤4
list.remove(0); //②
System.out.println("---------------------");
list.set(1,"黄蓉"); //③
for (int i = 0; i < list.size(); i++){//④
String name=(String)list.get(i);
System.out.println(name);
}
System.out.println("---------------------");
System.out.println(list.indexOf("小龙女")); //⑤
list.clear(); //清空list中的数据
System.out.println("---------------------");
System.out.println(list.isEmpty()); //⑦
}
}
①的代码调用ArrayList的无参构造方法,创建集合对象。
②的代码将list集合中索引为0的元素删除,list集合的下标从0开始。
③的代码将list集合中索引为1的元素替换成“黄蓉”。
④的代码是使用for循环遍历集合,输出集合的元素。list.get(i)取出集合中索引为i的元素,并强制转换为String类型。
⑤的代码输出元素“小龙女”所在的索引位置,因为集合中没有该元素,所以返回的结果为-1.
## LinkedList类
LinkedList类是List接口的链接列表实现类。他支持实现所有List接口可选的列表操作,并且允许元素值是任何类型,包括null。
LinkedList类采用链表存储方式存储数据,优点在于插入、删除元素时效率较高。
#### linkedList常用方法
LinkedList类是双向列表,列表中的每个节点都包含了对前一个和后一个元素的引用.
LinkedList的构造函数如下
1. public LinkedList(): ——生成空的链表
2. public LinkedList(Collection col): 复制构造函数
#### 方法

package com.Collectiom;
import java.util.LinkedList;
public class LinkedListDemo {
public static void main(String[] args) {
LinkedList link = new LinkedList();
link.addFirst(“a”);
link.addFirst(“b”);
link.addFirst(“c”);
System.out.println(link);//cba
System.out.println(link.getLast());//获取元素,单不删除元素
System.out.println(link.size());
//System.out.println(link.removeFirst());//获取元素及删除
System.out.println(link.size());
System.out.println(link);
//System.out.println(link.poll());
}
}
“`
ArrayList和LinkedList的大致区别如下:
- ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
- 对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
- 对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
Iterator接口
Iterator接口概述
Iterator接口也是Java集合框架的成员,但它与Collection系列、Map系列的集合不一样:Collection系列集合、Map系列集合主要用于盛装其他对象,而Iterator则主要用于遍历(即迭代访问)Collection集合中的元素,Iterator对象也被称为迭代器。
Iterator接口定义的4个方法
- boolean hasNext():如果被迭代的集合,元素还有没被遍历完,则返回true。
- Object next():返回集合里下一个元素。
- void remove():删除集合里上一次next方法返回的元素。
- void forEachRemaining(Consumeraction),这是Java8为Iterator新增的默认方法,该方法可使用Lambda表达式来遍历集合元素。