如何 高效便利 list 集合

正常我們會這樣寫:

public class Main {
    public static void main(String[] args) {
        List<String> list = List.of("apple", "pear", "banana");
        for (int i=0; i<list.size(); i++) {
            String s = list.get(i);
            System.out.println(s);
        }
    }
}

 

但這種方式並不推薦,一是代碼複雜,二是因爲get(int)方法只有ArrayList的實現是高效的,換成LinkedList後,索引越大,訪問速度越慢。

所以我們要始終堅持使用迭代器Iterator來訪問ListIterator本身也是一個對象,但它是由List的實例調用iterator()方法的時候創建的。Iterator對象知道如何遍歷一個List,並且不同的List類型,返回的Iterator對象實現也是不同的,但總是具有最高的訪問效率。

Iterator對象有兩個方法:boolean hasNext()判斷是否有下一個元素,E next()返回下一個元素。因此,使用Iterator遍歷List代碼如下:

public class Main {
    public static void main(String[] args) {
        List<String> list = List.of("apple", "pear", "banana");
        for (Iterator<String> it = list.iterator(); it.hasNext(); ) {
            String s = it.next();
            System.out.println(s);
        }
    }
}

有童鞋可能覺得使用Iterator訪問List的代碼比使用索引更復雜。但是,要記住,通過Iterator遍歷List永遠是最高效的方式。並且,由於Iterator遍歷是如此常用,所以,Java的for each循環本身就可以幫我們使用Iterator遍歷。把上面的代碼再改寫如下:

public class Main {
    public static void main(String[] args) {
        List<String> list = List.of("apple", "pear", "banana");
        for (String s : list) {
            System.out.println(s);
        }
    }
}

 

參考:https://www.liaoxuefeng.com/wiki/1252599548343744/1265112034799552

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章