1. 程式人生 > 程式設計 >Java集合框架迭代器Iterator實現原理解析

Java集合框架迭代器Iterator實現原理解析

使用迴圈遍歷集合

普通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迴圈適合順序訪問,或者通過下標進行訪問
  • 迭代器適合鏈式結構
  • 最終要看使用場景,效能會有輕微差別,但是可以忽略

注意事項

迭代出的物件是引用的拷貝,如果修改迭代中的元素,那麼就是修改容器物件的本身!!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。