JAVA Iterator接口與增強(qiáng)for循環(huán)的實(shí)現(xiàn)
1 Iterator迭代器
1.1 Iterator接口
- java.util.Iterator接口也是Java集合中的一員;
- Iterator主要用于迭代訪問(wèn)(即遍歷)Collection中的元素,因此Iterator對(duì)象也被稱為迭代器。
- public Iterator iterator(): 獲取集合對(duì)應(yīng)的迭代器,用來(lái)遍歷集合中的元素。
迭代:Collection集合元素的通用獲取方式。在取元素之前先判斷集合中有沒有元素。如果有,就把這個(gè)元素取出來(lái);繼續(xù)判斷,如果還有就再取出來(lái);就這樣一直把集合中的所有元素全部取出。
1.2 Iterator接口常用方法
- public boolean hasNext():如果下一個(gè)元素存在,返回 true,否則false;
- public E next():返回下一個(gè)元素。
1.3 案例演示
public class Demo {
public static void main(String[] args) {
// 使用多態(tài)方式創(chuàng)建對(duì)象
Collection<String> sg = new ArrayList<String>();
// 添加元素到集合
sg.add("劉備");
sg.add("關(guān)羽");
sg.add("張飛");
//使用迭代器進(jìn)行遍歷
Iterator<String> it = sg.iterator();
while(it.hasNext()){
String s = it.next();
System.out.println(s);
}
}
}
劉備
關(guān)羽
張飛
tips::如果集合中已經(jīng)沒有元素了,還繼續(xù)使用迭代器的next方法,將會(huì)發(fā)生java.util.NoSuchElementException沒有集合元素的錯(cuò)誤。
1.2 迭代器的實(shí)現(xiàn)原理
Iterator迭代器對(duì)象在遍歷集合時(shí),內(nèi)部采用指針的方式來(lái)跟蹤集合中的元素。
在調(diào)用Iterator的next方法之前,迭代器的索引位于第一個(gè)元素之前,不指向任何元素,當(dāng)?shù)谝淮握{(diào)用迭代器的next方法后,迭代器的索引會(huì)向后移動(dòng)一位,指向第一個(gè)元素并將該元素返回,當(dāng)再次調(diào)用next方法時(shí),迭代器的索引會(huì)指向第二個(gè)元素并將該元素返回,依此類推,直到hasNext方法返回false,表示到達(dá)了集合的末尾,終止對(duì)元素的遍歷。
2 增強(qiáng)for循環(huán)
增強(qiáng)for循環(huán)專門用來(lái)遍歷數(shù)組和Collection,它的內(nèi)部原理其實(shí)是個(gè)Iterator迭代器,所以在遍歷的過(guò)程中,不能對(duì)元素進(jìn)行增刪操作。
格式:
for(元素的數(shù)據(jù)類型 變量 : Collection集合or數(shù)組){
//寫操作代碼
}
示例1:遍歷數(shù)組
public class Demo {
public static void main(String[] args) {
int[] arr = {3,5,6,87};
//使用增強(qiáng)for遍歷數(shù)組
for(int a : arr){//a代表數(shù)組中的每個(gè)元素
System.out.println(a);
}
}
}
3
5
6
87
示例2:遍歷集合
public class Demo {
public static void main(String[] args) {
Collection<String> sg = new ArrayList<String>();
sg.add("劉備");
sg.add("關(guān)羽");
sg.add("張飛");
//使用增強(qiáng)for遍歷
for(String s :sg){//接收變量s代表 代表被遍歷到的集合元素
System.out.println(s);
}
}
}
劉備
關(guān)羽
張飛
到此這篇關(guān)于JAVA Iterator接口與增強(qiáng)for循環(huán)的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)JAVA Iterator接口與增強(qiáng)for循環(huán)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring?IOC容器Bean管理的完全注解開發(fā)放棄配置文件
這篇文章主要為大家介紹了Spring?IOC容器的Bean管理完全注解開發(fā)放棄配置文件,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
在CentOS上安裝Java 17并實(shí)現(xiàn)多版本共存的詳細(xì)教程
在現(xiàn)代軟件開發(fā)中,Java 作為一種廣泛使用的編程語(yǔ)言,其版本更新頻繁,不同項(xiàng)目可能依賴不同版本的 Java 運(yùn)行環(huán)境,CentOS 作為一款流行的 Linux 發(fā)行版,常被用于服務(wù)器部署和開發(fā)環(huán)境,本文將詳細(xì)介紹如何在 CentOS 上安裝 Java 17,并實(shí)現(xiàn)與現(xiàn)有 Java 8 的多版本共存2025-03-03
解決mybatis批量更新出現(xiàn)SQL報(bào)錯(cuò)問(wèn)題
這篇文章主要介紹了mybatis批量更新出現(xiàn)SQL報(bào)錯(cuò),解決辦法也很簡(jiǎn)單只需要在application.properties配置文中的數(shù)據(jù)源url后面添加一個(gè)參數(shù),需要的朋友可以參考下2022-02-02
Java初級(jí)必看的數(shù)據(jù)類型與常量變量知識(shí)點(diǎn)
這篇文章主要給大家介紹了關(guān)于Java初級(jí)必看的數(shù)據(jù)類型與常量變量知識(shí)點(diǎn)的相關(guān)資料,需要的朋友可以參考下2023-11-11
Java構(gòu)建菜單樹的實(shí)現(xiàn)示例
本文主要介紹了Java構(gòu)建菜單樹的實(shí)現(xiàn)示例,像一級(jí)菜單,二級(jí)菜單,三級(jí)菜單甚至更多層級(jí)的菜單,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05

