>[success] # Iterator接口
1. `java.util.Iterator`接口主要用于描述迭代器對象,可以遍歷Collection集合中的所有元素
2. `java.util.Collection`接口繼承**Iterator**接口,因此所有實現**Collection**接口的實現類都可以使用**該迭代器對象**
>[danger] ##### 常用的方法
| 方法聲明 | 功能介紹|
| --|--|
| boolean hasNext()| 判斷集合中是否有可以迭代/訪問的元素|
| E next() |用于取出一個元素并指向下一個元素|
| void remove() |用于刪除訪問到的最后一個元素|
>[danger] ##### 案例
~~~
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class CollectionTest {
public static void main(String[] args) {
Collection arr = new ArrayList();
arr.add(1);
arr.add(12);
arr.add("122");
Iterator iterator1 = arr.iterator();
// 1. hasNext 判斷是否有元素可以訪問
System.out.println(iterator1.hasNext()); // true
// 2. next 取出一個元素并指向下一個
System.out.println("獲取到的元素是:" + iterator1.next()); // 獲取到的元素是:1
System.out.println("獲取到的元素是:" + iterator1.next()); // 獲取到的元素是:12
System.out.println("獲取到的元素是:" + iterator1.next()); // 獲取到的元素是:122
// 3. hasNext 判斷是否有元素可以訪問,此時都取出完畢了沒有元素了
System.out.println(iterator1.hasNext()); // false
// 4. 沒有元素在強制取元素 會報錯
// System.out.println("獲取到的元素是:" + iterator1.next()); //
// 編譯ok,運行發生NoSuchElementException沒有這樣的元素異常
// 5.不能對正在被遍歷的集合進行改變(add,remove,clear等操作),但是可以調用iterator中的remove方法進行刪除
arr = new ArrayList();
arr.add(1);
arr.add(12);
arr.add("122");
Iterator iterator2 = arr.iterator();
while (iterator2.hasNext()) {
if (iterator2.next().equals(12)) {
iterator2.remove();
//arr.remove(obj); // 使用集合的remove方法編譯ok,運行發生ConcurrentModificationException并發修改異常,搜索手冊可查看更具體詳情
}
}
System.out.println(arr); // [1, 122]
// 6.利用迭代器循環便利所有值
iterator2 = arr.iterator();
while (iterator2.hasNext()) {
System.out.println(iterator2.next()); // 1 122
}
}
}
~~~
>[danger] ##### 迭代器實現 toString
~~~
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class CollectionTest {
public static void main(String[] args) {
Collection arr = new ArrayList();
arr.add(1);
arr.add(12);
arr.add("122");
Iterator iterator1 = arr.iterator();
// 迭代器實現toString
// 1. 聲明一個String
StringBuffer str = new StringBuffer();
str.append('[');
while (iterator1.hasNext()) {
Object obj = iterator1.next();
if (iterator1.hasNext()) {
str.append(obj).append(',');
} else {
// 沒有說明已經是最后一個元素了
str.append(obj).append(']');
}
}
System.out.print(str);
}
}
~~~
- windows -- 環境變量
- Vscode -- 編寫java
- 初始java
- java -- 關鍵字
- 編寫第一個java程序
- java -- 注釋
- 計算機存儲 -- 進制
- java -- 類型
- java -- 變量
- 數字類型
- 布爾類型
- 字符類型
- 類型轉換
- 雙等比較是什么
- java -- 運算符
- 算數運算符
- 字符串拼接
- 關系/比較運算符
- 自增減運算符
- 邏輯運算符
- 三目運算
- 賦值運算符
- 移位運算符
- 位運算符
- 運算符優先級
- java -- 流程控制語句
- if /else if /if -- 判斷
- switch case分支結構
- for -- 循環
- 用雙重for循環
- while -- 循環
- do while -- 循環
- 案例練習
- java -- 數組
- 數組的存儲
- 數組的增刪改查
- 數組的特點
- 數組案例
- 二維數組
- 數組的工具方法
- java -- 方法
- java -- 方法的重載
- java -- 方法的調用流程
- java -- 類方法傳參注意事項
- java -- 方法練習案例
- 對比 return break continue
- for each循環
- java -- 基礎練習
- java -- 面向對象
- java -- 創建類和對象
- java -- 訪問控制符
- java -- 類成員方法
- java -- 構造方法
- java -- this
- java -- 封裝
- java -- 對象內存圖
- java -- 創建對象案例
- java -- static
- java -- 繼承
- super -- 關鍵字
- java -- 構造塊和靜態代碼塊
- java -- 重寫
- java -- final
- java -- 多態
- java -- 抽象類
- java -- 接口
- 引用類型數據轉換
- 綜合案例
- java -- 內部類
- java -- 回調模式
- java -- 枚舉類型
- java -- switch 使用枚舉
- java -- 枚舉方法使用
- java -- 枚舉類實現接口
- java -- javaBean
- java -- package 包
- java -- import
- java -- 遞歸練習
- java -- 設計模式
- 單例模式
- java -- 注解
- java -- 元注解
- Java -- 核心類庫
- java -- 處理字符串
- Java -- String
- String -- 常用方法
- String -- 正則
- Java -- StringBuilder 和 StringBuffer
- 知識點
- Java -- StringJoiner 字符串拼接
- 練習題
- 字符串的總結
- Java -- 包裝類
- Integer
- Double
- Boolean
- Character
- java -- 集合類
- java -- util.Collection
- Iterator接口
- java -- util.List
- java -- ArrayList
- java -- util.Queue
- java -- util.Set
- java -- util.Map
- java -- util.Collections
- Java -- Math
- Java -- java.lang
- Java -- Object
- Java -- 獲取當前時間戳
- Java -- 異常
- Java -- java.util
- java -- Date
- java -- Calender
- Java -- java.text
- Java -- SimpleDateFormat
- Java -- java.time
- Java -- java.io
- java -- io.File
- java -- 泛型
- IDEA -- 用法