List集合包括list接口以及List接口的所有实现类。list集合中的元素允许重复,各元素的顺序就是对象插入的顺序。类似Java数组,用户可以通过索引(元素在集合中的位置)来访问集合中的元素。
List接口
list接口继承了collection接口,因此包含collection中的所有方法。此外,list接口还定义了以下两个非常重要的方法。
- get(int index):获得指定索引位置的元素
- set(int index,Object obj):将集合中指定索引位置的对象修改为指定的对象
List接口的实现类
list接口的常用实现类有ArrayList和LinkedList。
- ArrayList类实现了可变数组,允许保存所有的元素,也可以包含null,并根据索引位置对集合进行快速的随机访问;缺点是向指定的索引位置插入对象或者删除对象的速度慢
- LinkedList类采用链表结构保存对象。这种结构的优点是便于向集合中插入和删除对象,需要向集合中插入,删除对象时,采用LinkedList类实现的list集合的效率较高,但对于随机访问集合中的对象,使用LinkedList类实现list集合的效率比较低
使用list集合时通常声明为list类型,可通过不同的实现类来实例化集合
分别通过ArrayList,LinkedList类实例化list集合,代码如下:
List<E> list = new ArrayList<>();
List<E> list2 = new LinkedList<>();
上面的代码中,E可以是合法的Java数据类型。例如,如果集合中的元素为字符串类型,那么E可以修改为String
创建类Damo1,在主方法中创建集合对象,通过Math类的random()方法随机获取集合中的某个元素,然后移除数组中索引位置为“2”的元素,最后遍历数组。
import java.util.ArrayList;
import java.util.List;
public class Demo1 {//创建类Demo1
public static void main(String[] args) {//主方法
List<String> list = new ArrayList<>();//创建集合对象
list.add("a");//向集合中添加元素
list.add("b");
list.add("c");
int i = (int) (Math.random()*list.size());//获得0~2之间的随机数
System.out.println("随机获取数组中的元素:"+list.get(i));
list.remove(2);//将指定索引位置的元素从集合中移除
System.out.println("将索引是2的元素从数组移除后,数组中的元素是:");
for(int j =0;j<list.size();j++){
System.out.println(list.get(j));
}
}
}
运行结果如下所示。Math类的random()方法可以获得一个0.0~1.0之间的随机数
说明:与数组相同,集合的索引也是从0开始