【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)模式
- PHP迭代器Iterator介面PHP
- STL之迭代器(iterator)
- Iterator與Iterable(迭代器與可迭代)
- JAVA設計模式之 迭代器模式【Iterator Pattern】Java設計模式
- C++ STL迭代器(iterator)C++
- python黑魔法---迭代器(iterator)Python
- Python學習迭代器(Iterator)Python
- 【ES6基礎】迭代器(iterator)
- Java集合學習記錄——IteratorJava
- java版 SpringCloud分散式微服務雲架構之Java Iterator(迭代器)JavaSpringGCCloud分散式微服務架構
- Java中Iterator迭代器的next()方法的新手易錯點。Java
- c/c++ 標準庫 迭代器(iterator)C++
- 設計模式--迭代器模式Iterator(行為型)設計模式
- C#設計模式系列:迭代器模式(Iterator)C#設計模式
- 三十四、java版 SpringCloud分散式微服務雲架構之Java Iterator(迭代器)JavaSpringGCCloud分散式微服務架構
- Java 基礎(二)集合原始碼解析 IteratorJava原始碼
- ??Java開發者的Python快速進修指南:迭代器(Iterator)與生成器JavaPython
- JavaScript淺談之迭代器(Iterator) 和for-of迴圈JavaScript
- 設計模式的征途—21.迭代器(Iterator)模式設計模式
- # Swift 集合型別之迭代器Swift型別
- Java集合詳解3:Iterator,fail-fast機制與比較器JavaAIAST
- java迭代器Java
- Java容器類原始碼分析之Iterator與ListIterator迭代器(基於JDK8)Java原始碼JDK
- Iterator(迭代器)的用法及其背後機制的探究
- 【設計模式基礎】行為模式 - 7 - 迭代器(Iterator)設計模式
- 初學設計模式(java版)一:行為型模式之--Iterator模式(迭代器模式)設計模式Java
- Java學習之集合框架的迭代器--Iteratorjk及ListItertor介面Java框架
- 實現Java集合迭代的高效能Java
- 使用C# (.NET Core) 實現迭代器設計模式 (Iterator Pattern)C#設計模式
- 淺談Java迭代器Java
- 切圖崽的自我修養-[ES6] 迭代器Iterator淺析
- es6 快速入門 系列 —— 迭代器 (Iterator) 和 生成器 (Generator)