您的位置:

Java List遍历

一、List简介

List是Java中常用的一种集合容器,是一个有序的集合,可以存入重复元素。List中的元素是按照插入顺序排列的,提供了根据索引访问元素、替换元素、插入元素和删除元素的操作方法。Java中常用的List有ArrayList、LinkedList和Vector。

二、List遍历方法

1. for循环遍历

使用for循环遍历List,代码如下:

List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");

for(int i = 0; i < list.size(); i++) {
    System.out.println(list.get(i));
}

通过循环控制语句,每次循环获取List中对应位置的元素,输出后进行下一次循环。

2. 迭代器遍历

使用迭代器Iterator遍历List,代码如下:

List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");

Iterator<String> iterator = list.iterator();
while(iterator.hasNext()) {
    System.out.println(iterator.next());
}

通过迭代器的hasNext()方法和next()方法遍历List,hasNext()方法用于判断集合中是否存在下一个元素,next()用于获取下一个元素。

3. forEach遍历

使用forEach遍历List,代码如下:

List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");

list.forEach(item -> System.out.println(item));

使用Lambda表达式结合forEach()方法遍历List,Lambda表达式中的item表示List中当前遍历到的元素。

三、List遍历效率比较

在效率上,for循环遍历和迭代器遍历会比forEach遍历更快。因为forEach遍历底层采用了迭代器遍历,而迭代器遍历是基于指针移动的,而for循环遍历是基于索引获取元素,效率比较高。但forEach遍历更具可读性,Java8引入Lambda表达式可以更加简洁地进行List遍历。

四、List特殊遍历

Java中还提供了一些特殊的List遍历方法,如倒序遍历、从指定位置遍历等。

1. 倒序遍历

使用ListIterator可以实现倒序遍历,代码如下:

List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");

ListIterator<String> iterator = list.listIterator(list.size());
while(iterator.hasPrevious()) {
    System.out.println(iterator.previous());
}

要倒序遍历List,需要首先获取List的ListIterator,然后使用hasPrevious()和previous()方法遍历List,注意ListIterator的初始位置应该是List的长度。

2. 从指定位置遍历

使用subList()方法可以从指定位置开始遍历List,代码如下:

List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");

List<String> subList = list.subList(1, 3);

for(String item : subList) {
    System.out.println(item);
}

subList()方法可以返回一个List子集,即返回从fromIndex到toIndex之间的元素(包含fromIndex,不包含toIndex),然后再进行遍历。

五、总结

对于List的遍历,我们可以通过for循环遍历、迭代器遍历、forEach遍历等多种方法。我们需要根据实际情况、遍历效率和代码可读性等方面进行选择。此外,还有一些特殊的遍历方式,如倒序遍历和从指定位置遍历,也可以根据实际需要进行使用。