Java List接口與Iterator接口及foreach循環(huán)使用解析
List接口
List接口繼承Collection接口,屬于單列集合,在List集合中允許出現(xiàn)重復(fù)的元素,所有的元素是以一種線性方式進(jìn)行存儲(chǔ)的,在程序中通過(guò)索引來(lái)訪問(wèn)集合中的指定元素,元素是順序存儲(chǔ)的,即元素的存入順序和取出順序一致。
ArrayList集合
ArrayList是List接口的一個(gè)實(shí)現(xiàn)類,在ArrayList內(nèi)部封裝了一個(gè)長(zhǎng)度可變的數(shù)組對(duì)象。
package 集合類; import java.util.ArrayList; import java.util.Arrays; public class FengZhuanglei { public static void main(String[] args) { ArrayList list=new ArrayList(); list.add("stu1"); list.add("stu2"); list.add("stu3"); list.add("stu4"); System.out.println("集合的長(zhǎng)度:"+list.size()); System.out.println("第二個(gè)元素是:"+list.get(1)); } }
運(yùn)行結(jié)果
由運(yùn)行結(jié)果可知,ArrayList和數(shù)組索引都是從0開(kāi)始的,由于ArrayList集合的底層是使用一個(gè)數(shù)組來(lái)保存元素的,在進(jìn)行增加或刪除指定位置的元素時(shí),會(huì)導(dǎo)致創(chuàng)建一個(gè)新的數(shù)組,效率比較低,因此不適合進(jìn)行大量的增刪操作,但是可以通過(guò)索引來(lái)查找元素,這也增加了查找元素的效率。
LinkedList集合
為了解決ArrayList集合在增刪元素的效率低的問(wèn)題,引入了LinkList集合,在LinkList集合的內(nèi)部維護(hù)了一個(gè)雙向的循環(huán)鏈表,鏈表的每一個(gè)元素都使用引用的方式來(lái)記住它的前一個(gè)元素和后一個(gè)元素,因此可以將所有的元素連接起來(lái),當(dāng)插入一個(gè)新元素時(shí),只需要修改元素之間的引用關(guān)系,這樣可以增加對(duì)于元素進(jìn)行增刪操作的效率。
package 集合類; import java.util.LinkedList; public class LianBiao { public static void main(String[] args) { LinkedList link =new LinkedList(); link.add("stu1"); link.add("stu2"); link.add("stu3"); link.add("stu4"); //打印集合中的元素 System.out.println(link.toString()); //在集合中插入元素 link.add(3,"Student"); //在集合的第一個(gè)位置插入元素 link.addFirst("李龍"); System.out.println(link); //取出集合中的第一個(gè)元素 System.out.println(link.getFirst()); //刪除集合中的元素 link.remove(3); //刪除集合中的第一個(gè)元素 link.removeFirst(); System.out.println(link); } }
運(yùn)行結(jié)果
Iterator接口
Iterator主要用于去遍歷Collection中的元素,Iterator也被稱為迭代器。
package 集合類; import java.util.ArrayList; import java.util.Iterator; public class DieDai { public static void main(String[] args) { ArrayList list=new ArrayList(); list.add("好好學(xué)習(xí)"); list.add("做一個(gè)優(yōu)秀的共產(chǎn)主義接班人"); list.add("為人民服務(wù)"); list.add("做一個(gè)對(duì)社會(huì)有用的人"); Iterator it= list.iterator(); //判斷ArrayList是否存在下一個(gè)元素 while(it.hasNext()){ Object obj=it.next(); System.out.println(obj); } } }
運(yùn)行結(jié)果
在Iterator遍歷的過(guò)程中,首先通過(guò)hasNext()方法先去判斷集合中是否還存在下一個(gè)元素,如果存在元素,通過(guò)next()方法取出元素。
foreach循環(huán)
增強(qiáng)for循環(huán),foreach循環(huán)不需要獲得循環(huán)的長(zhǎng)度,也不需要通過(guò)索引去訪問(wèn)循環(huán)中的元素,foreach會(huì)自動(dòng)的去遍歷循環(huán)中的每一個(gè)元素。
package 集合類; import java.util.ArrayList; public class FE { public static void main(String[] args) { ArrayList list=new ArrayList(); list.add("hello"); list.add("world"); for(Object obj: list){ System.out.println(obj); } } }
運(yùn)行結(jié)果
可以看出,增強(qiáng)for循環(huán)在遍歷集合的過(guò)程中非常方便,沒(méi)有循環(huán)條件,也沒(méi)有迭代,循環(huán)的次數(shù)是由循環(huán)中的元素個(gè)數(shù)決定的,每次循環(huán)時(shí),增強(qiáng)for循環(huán)都通過(guò)變量將當(dāng)前循環(huán)的元素記住,從而將集合中的元素分別打印出來(lái)。
到此這篇關(guān)于Java List接口與Iterator接口及foreach循環(huán)使用解析的文章就介紹到這了,更多相關(guān)Java List接口內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java inputstream和outputstream使用詳解
這篇文章主要介紹了Java inputstream和outputstream使用詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08MybatisPlus中插入數(shù)據(jù)后獲取該對(duì)象主鍵值的實(shí)現(xiàn)
這篇文章主要介紹了MybatisPlus中插入數(shù)據(jù)后獲取該對(duì)象主鍵值,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09SpringBoot通過(guò)請(qǐng)求對(duì)象獲取輸入流無(wú)數(shù)據(jù)
這篇文章主要介紹了使用SpringBoot通過(guò)請(qǐng)求對(duì)象獲取輸入流無(wú)數(shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03SpringBoot中web模板渲染的實(shí)現(xiàn)
本文主要介紹了SpringBoot中web模板渲染的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02RocketMQ設(shè)計(jì)之主從復(fù)制和讀寫分離
這篇文章主要介紹了RocketMQ設(shè)計(jì)之主從復(fù)制和讀寫分離,RocketMQ提高消費(fèi)避免Broker發(fā)生單點(diǎn)故障引起B(yǎng)roker上的消息無(wú)法及時(shí)消費(fèi),下文關(guān)于了RocketMQ的相關(guān)內(nèi)容,需要的小伙伴可以參考一下2022-03-03Mybatis如何實(shí)現(xiàn)關(guān)聯(lián)屬性懶加載
這篇文章主要介紹了Mybatis如何實(shí)現(xiàn)關(guān)聯(lián)屬性懶加載的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07詳解springboot采用多數(shù)據(jù)源對(duì)JdbcTemplate配置的方法
在本篇文章中我們給大家詳細(xì)分享了springboot采用多數(shù)據(jù)源對(duì)JdbcTemplate配置的方法,有需要的朋友們可以學(xué)習(xí)參考下。2018-10-10