集合类中,List是最基础的一种集合:它是一种有序列表。
List的行为和数组几乎是完全相同:List内部按照放入元素的先后顺序存放,每个元素都可以通过索引确定自己的位置。
List有两种类型的List:
- ArrayList:擅长随机访问元素,但是在List中间插入和删除元素时速度较慢。
- linkedList:随机访问较慢,但是插入和删除操作快
删除操作:实际上就是把删除元素后面的元素依次往前挪动一个位置。
添加操作:是把添加的元素后面的元素一次往后挪动一个位置,腾出来的位置为新加的元素。
这两种操作,用数组实现起来都很麻烦。
在实际应用中,需要增删元素的有序列表,使用最多的是ArrayList。
ArrayList在内部使用了数组来存储所有元素,例如一个ArrayList有5个元素,实际数组大小为6(即有一个空位);
- List允许我们添加重复元素,即List内部的元素可以重复:
package com.wtcto;
import java.util.*;
public class HelloJava {
public static void main(String[] args) {
List list = new ArrayList<>();
list.add("apple");
list.add("pear");
list.add("apple");
System.out.println(list.size());//3
}
}
创建List
可以这样创建一个List:
Listapples = new ArrayList<>();
注意ArrayList已经被向上转型为了List。
除了使用ArrayList和linkedList,我们还可以通过List接口提供的of()方法,根绝给定元素快速创建List:
Listlist = List.of(1,3,5);
但是List.of()方法不接受null值。
遍历List使用迭代器Iterator来访问List。Iterator本身也是对象,它由List的实例调用iterator()方法时候创建的。
一般遍历数组都是采用for循环或者增强for,这两种方法也可以用在集合框架,但是还有一种方法是采用迭代器遍历集合框架,它是一个对象,实现了iterator接口或者Listlterator接口。
package com.wtcto;
import java.util.*;
public class HelloJava {
public static void main(String[] args) {
Listlist= new ArrayList();
list.add("apple");
list.add("banana");
list.add("bear");
//第一种方法遍历使用for-earch
for (String str:list){
System.out.println(str);
}
//第二种遍历,使用迭代器进行相关遍历
Iteratorite=list.iterator();
while(ite.hasNext()){//判断下一个元素有值
System.out.println(ite.next());
}
}
}



