Java使用迭代器Iterator遍歷集合
前言
上兩篇文章總結瞭集合體系以及Collection常用方法,本節我們來學習使用迭代器 Iterator 遍歷集合!
Iterator 概述
Iterator對象稱為迭代器(設計模式的一種),主要用於遍歷 Collection 集合中的元素。
GOF 給迭代器模式的定義為:提供一種方法訪問一個容器對象中各個元素,而又不需暴露該對象的內部細節。迭代器模式,就是為容器而生。
Collection 接口繼承瞭 java.lang.Iterable 接口,該接口有一個 iterator ()方法,那麼所有實現瞭 Collection 接口的集合類都有一個 iterator ()方法,用以返回一個實現瞭 Iterator 接口的對象。
Iterator 僅用於遍歷集合, lterator 本身並不提供承裝對象的能力。如果需要創建 Iterator 對象,則必須有一個被迭代的集合。
集合對象每次調用 iterator() 方法都得到一個全新的迭代器對象,默認遊標都在集合的第一個元素之前。
Iterator 的使用
使用 next() 方法遍歷集合
import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; /** * @Author:Aniu * @Date:2022/12/6 11:51 * @description TODO */ public class Demo { public static void main(String[] args) { Collection coll = new ArrayList(); coll.add("aniu"); coll.add(123); //自動裝箱 coll.add(new String("miao")); // 遍歷集合 Iterator iterator1 = coll.iterator(); // 方式一:利用 for 循環 -》不推薦 for(int i=0;i<coll.size();i++){ System.out.println(iterator1.next()); } System.out.println("-----------"); // 方式二 :利用 while 循環 -》推薦 Iterator iterator2 = coll.iterator(); while(iterator2.hasNext()){ System.out.println(iterator2.next()); } } }
使用 remove 方法刪除元素
我們也可以使用迭代器中的 remove 方法刪除集合中的元素。
Collection coll = new ArrayList(); coll.add("aniu"); coll.add(123); //自動裝箱 coll.add(new String("miao")); // 刪除"miao" Iterator iterator = coll.iterator(); while(iterator.hasNext()){ Object obj = iterator.next(); if("miao".equals(obj)){ iterator.remove(); // 刪除"miao" } } System.out.println(coll);
迭代器 Iterator 的執行原理
Iterator iterator = coll.iterator(); while(iterator.hasNext()){ //hasnext() 判斷是否還有下一個元素 System.out.println(iterator.next()); //next 1.指針下移 2.將下移以後集合位置上的元素返回 }
使用foreach循環遍歷集合或數組
foreach循環又叫增強for循環,對於這個應該都很熟悉瞭吧,看下大概結構!
// for(datatype 變量名 : 遍歷對象) for(Object obj:coll){ System.out.println(obj); }
內部還是調用瞭迭代器!
需要註意的是,使用增強for循環無法改變數組裡的值。
例:
String[] arr = new String[]{"aniu","haha","zz"}; for(int i=0;i<arr.length;i++){ arr[i] = "momo"; } for(int i=0;i<arr.length;i++){ System.out.println(arr[i]); } System.out.println("----------"); String[] arr1 = new String[]{"aniu","haha","zz"}; for (String str:arr1){ str = "momo"; } for(int i=0;i<arr1.length;i++){ System.out.println(arr1[i]); }
可以看到增強for並沒修改數組的值,本質上是將遍歷值復制給瞭新變量String str,因此改變的是這個新變量的值!
到此這篇關於Java使用迭代器Iterator遍歷集合的文章就介紹到這瞭,更多相關Java迭代器Iterator遍歷集合內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 深入淺出講解Java集合之Collection接口
- Java中Iterator與ListIterator迭代的區別
- Java之map的常見用法講解與五種循環遍歷實例代碼理解
- java迭代器中刪除元素的實例操作詳解
- Java List的remove()方法踩坑