一、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遍歷等多種方法。我們需要根據實際情況、遍歷效率和代碼可讀性等方面進行選擇。此外,還有一些特殊的遍歷方式,如倒序遍歷和從指定位置遍歷,也可以根據實際需要進行使用。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/249680.html