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