List集合
List集合包括List接口以及List接口List接口的所有实现类.List集合中的元素允许重复,各元素的顺序就是对象插入的顺序.类似的Java数组,用户可通过使用索引(元素在集合中的位置)来访问集合中的元素.
一、List接口
List接口集继承了Colloction接口,因此包含Collection中的所有方法.此外,List接口还定义了一下两个非常重要的方法.
1.get(int index):获得指定索引位置元素
2set(int index,Object obj):将集合众中指定索引位置的对象修改为指定的对象.
二、List接口实现类
List接口的常用实现类有ArrayList与LinkedList.
1.ArrayList实现了长度可变的数组,内存中分配连续的空间,遍历元素和随机访问元素的效率比较高;缺点是向指定的索引位置插入对象或删除对象的速度较慢.
ArrayList图例
2.LinkedList采用链表储存方式,插入,删除元素是效率较高;但对于随机访问集合中的对象,使用LinkedList实现List集合效率低.
使用List集合通常声明为List类型,可通过不同的实现类类实例化集合.
LinkedList图例
[例1]
分别通过ArrayList、LinkedList实例化List集合,代码如下:
List<E> list1 = new ArrayList<>(); List<E> list2 = new LinkedList<>();
上面代码中,E史可法的Java数据类型.例如,如果集合中的元素为字符串,那么E可以修改为String.
[例2]
在项目中创建类Gather,在主方法中创建集合对象,通过Math类的random()方法随机获取集合中的某个元素,然后移除数组中索引位置是"2"的元素,最后遍历数组.
package List; import java.util.*; public class Gather { //创建类Gather 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(i)); } } }
运行结果:
说明:
与数组相同,集合的索引也是从0开始