在Collection体系中,List集合是有序的,可对其中每个元素的插入位置进行精确地控制,可以通过索引来访问元素,遍历元素。List集合是指由List接口以及List接口的所有实现类组成的集合,List有序集合也称为序列,该界面的用户可以精确地控制列表中每个元素的插入位置,用户可以通过整数索引访问元素,并搜索列表中的元素。与Set集合不同,列表通常允许重复元素。
1.List集合特点
1)有序:存储和取出的元素顺序一致;
2)可重复:存储的元素可以重复。
2.List常用方法
1)添加功能
boolean add(E e):向集合中添加一个元素。
void add(int index, E element):在指定位置添加元素。
boolean addAll(Collection<? extends E> c):向集合中添加一个集合的元素。
2)删除功能
void clear():删除集合中的所有元素。
E remove(int index):根据指定索引删除元素,并把删除的元素返回。
boolean remove(Object o):从集合中删除指定的元素。
boolean removeAll(Collection<?> c):从集合中删除一个指定的集合元素。
3)修改功能
E set(int index, E element):把指定索引位置的元素修改为指定的值,返回修改前的值。
4)获取功能
E get(int index):获取指定位置的元素。
Iterator iterator():就是用来获取集合中每一个元素。
5)判断功能
boolean isEmpty():判断集合是否为空。
boolean contains(Object o):判断集合中是否存在指定的元素。
boolean containsAll(Collection<?> c):判断集合中是否存在指定的一个集合中的元素。
6)长度功能
int size():获取集合中的元素个数。
7)把集合转换成数组
Object[] toArray():把集合变成数组。
3.ListIterator列表迭代器
因为是通过List集合的listIterator()方法得到的,所以称为List集合特有的迭代器。
ListIterator的常用方法如下:
1)E next():返回迭代器中的下一个元素。
2)boolean hasNext():如果迭代具有更多元素,则返回true。
3)E previous():返回列表中的上一个元素。
4)boolean hasPrevious():如果此列表迭代器在相反方向遍历列表时具有更多元素,则返回true。
5)void add(E e):将指定的元素插入列表。
例如:
import java.util.ArrayList; import java.util.List; import java.util.ListIterator; public class Main { public static void main(String[] args) { List<String> l = new ArrayList<String>(); l.add("hello"); l.add("world"); l.add("java"); ListIterator<String> listit = l.listIterator(); while(listit.hasNext()) { String s = listit.next(); System.out.println(s); } System.out.println("www.dotcpp.com"); while(listit.hasPrevious()) { String sp = listit.previous(); System.out.println(sp); } System.out.println("www.dotcpp.com"); ListIterator<String> listit2 = l.listIterator(); while(listit2.hasNext()) { String s2 = listit2.next(); if(s2.equals("world")) { listit2.add("dotcpp"); } } System.out.println(l); } }
运行结果如下:
hello world java www.dotcpp.com java world hello www.dotcpp.com [hello, world, dotcpp, java]
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程