一、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遍历等多种方法。我们需要根据实际情况、遍历效率和代码可读性等方面进行选择。此外,还有一些特殊的遍历方式,如倒序遍历和从指定位置遍历,也可以根据实际需要进行使用。