Java集合框架迭代器Iterator實現原理解析
阿新 • • 發佈:2020-08-05
使用迴圈遍歷集合
普通for迴圈
for(int i=0;i<10;i++){}
增強for迴圈
for(String str:list){}
什麼是迭代器Iterator
Iterator是Java中的一個介面,核心作用就是用來遍歷容器的元素,當容器實現了Iterator介面後,可以通過呼叫Iterator()方法獲取一個Iterator物件
為啥是呼叫容器裡面的Iterator方法呢?
因為容器的實現有多種,不同的容器遍歷規則不一樣,比如:ArrayList、LinkedList、HashSet、TreeSet等,所以設計了Iterator介面,讓容器本身去實現這個介面,實現裡面的方法,從而讓開發人員不用關心容器的遍歷機制,直接使用對應的方法即可
三個核心方法
- boolean hashNext():用於判斷Iterator內是否有下個元素,如果有則返回true,沒有則false
- Object next():返回Iterator的下一個元素,同時指標也會向後移動一位
- void remove():刪除指標的上一個元素(建議使用自己容器裡的方法)
public static void testSet() { Set<String> set = new HashSet<>(); set.add("jack"); set.add("tom"); set.add("marry"); set.add("tony"); set.add("jack"); Iterator<String> iterator = set.iterator(); while (iterator.hasNext()) { String str = iterator.next(); System.out.println(str); } } public static void testList() { List<String> list = new ArrayList<>(); list.add("jack"); list.add("tom"); list.add("mary"); list.add("tim"); list.add("tony"); list.add("eric"); list.add("jack"); Iterator<String> iterator = list.iterator(); while (iterator.hasNext()) { String str = iterator.next(); System.out.println(str); } }
迭代器和for迴圈對比
- for迴圈適合順序訪問,或者通過下標進行訪問
- 迭代器適合鏈式結構
- 最終要看使用場景,效能會有輕微差別,但是可以忽略
注意事項
迭代出的物件是引用的拷貝,如果修改迭代中的元素,那麼就是修改容器物件的本身!!
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。