List集合代表一个元素有序、可重复的集合,集合中每个元素都有其对应的顺序索引。 List集合允许使用重复元素,可以通过索引来访问指定位置的集合元素。List集合默认 按元素的添加顺序设置元素的索引,例如第一次添加的元素索引为0,第二次添加的元 素索引就为1,以此类推。
1.List接口
List接口继承了Collection接口,因此包含Collection中的所有方法。此外,List接口还定义了以下两个非常重要的方法。
get(in index):获得指定索引位置的元素;
set(int index,Object obj):将集合中指定索引位置的对象修改为指定的对象。
2.List接口的实现类
List接口的常用实现类有ArrayList与LinkedList。
(1)ArrayList类实现了可变的数组,允许保存所有元素,包括null,并可以根据索引位置对集合进行快速的随机访问,缺点是向指定的索引位置插入对象或删除对象的速度慢;(2)LinkedList类采用链表结构保存对象,这种结构的优点是便于向集合中插入和删除对象,需要向集合中插入、删除对象时,使用LinkedList类实现的List集合的效率比较高,但对于随机访问集合中的对象时,使用LinkedList类实现List集合的效率比较低。
使用List集合通常声明为List类型,可通过不同的实现类来实例化集合,代码如下:
List<E> list1=new ArrayList<>();
List<E> list2=new LinkedList<>();
E指的是合法的Java数据类型
3.以下是List集合中常用的一些方法举例,示例代码(以ArrayList为例):
public class Listone {
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
//添加元素
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e");
list.add("a");//允许元素重复
list.add("f");
list.add(null);//允许元素为null
//移除元素
list.remove(1);//通过索引移除
list.remove("c");//通过索引移除
List<String> list2=new ArrayList<String>();
list2.add("e");
list2.add("f");
list2.add("k");
list.removeAll(list2);//移除多个
System.out.println(list);//输出list
System.out.println("------------for循环遍历");
//获取list集合元素个数list.size()
for (int i = 0; i < list.size(); i++) {
//获取list集合中某个元素list.get(index)
System.out.print(list.get(i)+" ");
}
System.out.println();
System.out.println("------------foreach循环遍历");
for (String string : list) {
System.out.print(string+" ");
}
System.out.println();
//迭代器Iterator
System.out.println("------------迭代器Iterator while遍历");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {//iterator.hasNext()判断是否有下一个元素
//iterator.next()获取下一个元素
System.out.print(iterator.next() + " ");
}
System.out.println();
System.out.println("------------迭代器Iterator for遍历");
for (Iterator<String> iterator2 = list.iterator(); iterator2.hasNext();) {
System.out.print(iterator2.next() + " ");
}
System.out.println();
// 返回元素a在List集合中第一次出现的位置索引。
System.out.println("a元素第一次出现的位置:" + list.indexOf("a"));
// 返回元素a在List集合中最后一次出现的位置索引。
System.out.println("a元素最后一次出现的位置:" + list.lastIndexOf("a"));
// 判断List集合中是否存在元素c
System.out.println("List集合中是否存在元素c:" + list.contains("c"));
//替换元素
list.set(2, "c");
System.out.println("替换后的list集合:"+list);
System.out.println("截取list集合中第二位元素:");
List<String> List3 = list.subList(1, 2);
System.out.println(List3);
// 判断集合是否为空
System.out.println("List集合否为空:" + list.isEmpty());
list.clear();// 清空集合
System.out.println("List集合否为空:" + list.isEmpty());
}
}
运行结果截图: