【java】【集合】迭代器Iterator
集合是用來儲存元素,儲存的元素需要檢視,那麼就需要迭代(遍歷)
collection介面有個iterator()方法,返回迭代器Iterator介面。
public Iterator iterator()
Iterator介面中有三個方法:
- boolean hasNext():如果仍有元素可以迭代,則返回true
- Object Next():返回迭代的下一個元素
- void remove():從迭代器只想的collection中一處迭代器返回的最後一個元素(可選操作)。
Collection c = new ArrayList();
c.add("a");
c.add("b");
c.add("c");
c.add("d");
Iterator it = c.iterator(); //獲取迭代器的引用
while(it.hasNext()) { //集合中的迭代方法(遍歷)
System.out.println(it.next());
}
Collection c = new ArrayList();
c.add(new Student("張三", 23)); //Object obj = new Student("張三",23);
c.add(new Student("李四", 24));
c.add(new Student("王五", 25));
c.add(new Student("趙六", 26));
//獲取迭代器
Iterator it = c.iterator();
while(it.hasNext()) {
//System.out.println(it.next());
Student s = (Student)it.next(); //向下轉型
System.out.println(s.getName() + "..." + s.getAge());
}
注意:只要碰到了集合輸出的操作,就一定要使用Iterator介面,因為這是最標準的做法。
1、迭代器原理
迭代器是對集合進行遍歷,而每都一個集合內部的儲存結構是不同的,所以每一個集合存和取都是不一樣,那麼就需要在每一個類中定義hasNext()和next()方法,這樣做是可以的,但是會讓整個集合體系過於臃腫,迭代器是將這樣的方法向上抽取出介面,然後在每個類的內部,定義自己迭代方式,這樣做的好處有二,第一規定了整個集合體系的遍歷方式都是hasNext()和next()方法,第二,程式碼有底層內部實現,使用者不用管怎麼實現的,會用即可
2、迭代器原始碼解析
* 1,在eclipse中ctrl + shift + t找到ArrayList類
* 2,ctrl+o查詢iterator()方法
* 3,檢視返回值型別是new Itr(),說明Itr這個類實現Iterator介面
* 4,查詢Itr這個內部類,發現重寫了Iterator中的所有抽象方法
相關文章
- Java 集合(2)之 Iterator 迭代器Java
- 集合------集合框架Collection/Iterator迭代器/增強for迴圈框架
- Java基礎Iterator迭代器Java
- 迭代器 iterator
- Iterator迭代器
- 迭代器模式(Iterator)模式
- Iterator與Iterable(迭代器與可迭代)
- Python學習迭代器(Iterator)Python
- C++ STL迭代器(iterator)C++
- Java集合學習記錄——IteratorJava
- java版 SpringCloud分散式微服務雲架構之Java Iterator(迭代器)JavaSpringGCCloud分散式微服務架構
- Java中Iterator迭代器的next()方法的新手易錯點。Java
- 【ES6基礎】迭代器(iterator)
- c/c++ 標準庫 迭代器(iterator)C++
- 三十四、java版 SpringCloud分散式微服務雲架構之Java Iterator(迭代器)JavaSpringGCCloud分散式微服務架構
- Java集合詳解3:Iterator,fail-fast機制與比較器JavaAIAST
- JavaScript淺談之迭代器(Iterator) 和for-of迴圈JavaScript
- ??Java開發者的Python快速進修指南:迭代器(Iterator)與生成器JavaPython
- Java容器類原始碼分析之Iterator與ListIterator迭代器(基於JDK8)Java原始碼JDK
- Iterator(迭代器)的用法及其背後機制的探究
- 初學設計模式(java版)一:行為型模式之--Iterator模式(迭代器模式)設計模式Java
- 實現Java集合迭代的高效能Java
- 使用C# (.NET Core) 實現迭代器設計模式 (Iterator Pattern)C#設計模式
- 一文徹底搞懂Python可迭代(Iterable)、迭代器(Iterator)和生成器(Generator)的概念Python
- 淺談Java迭代器Java
- 集合迭代/遍歷
- es6 快速入門 系列 —— 迭代器 (Iterator) 和 生成器 (Generator)
- 切圖崽的自我修養-[ES6] 迭代器Iterator淺析
- Java集合詳解3:一文讀懂Iterator,fail-fast機制與比較器JavaAIAST
- C++學習隨筆——使用map和迭代器iterator的簡單範例C++
- rust實戰系列 - 使用Iterator 迭代器實現斐波那契數列(Fibonacci )Rust
- Java——深入瞭解Java中的迭代器Java
- 還在用迭代器處理集合嗎?試試Stream,真香
- 設計模式系列之迭代器模式(Iterator Pattern)——遍歷聚合物件中的元素設計模式物件
- java基礎之:迭代器詳解Java
- 基於原始碼去理解Iterator迭代器的Fail-Fast與Fail-Safe機制原始碼AIAST
- JavaScript Iterator遍歷器JavaScript
- 設計模式(十七)——迭代器模式(ArrayList 集合應用原始碼分析)設計模式原始碼