Java List接口與Iterator接口及foreach循環(huán)使用解析
List接口
List接口繼承Collection接口,屬于單列集合,在List集合中允許出現(xiàn)重復(fù)的元素,所有的元素是以一種線性方式進(jìn)行存儲的,在程序中通過索引來訪問集合中的指定元素,元素是順序存儲的,即元素的存入順序和取出順序一致。
ArrayList集合
ArrayList是List接口的一個實(shí)現(xiàn)類,在ArrayList內(nèi)部封裝了一個長度可變的數(shù)組對象。
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("集合的長度:"+list.size());
System.out.println("第二個元素是:"+list.get(1));
}
}運(yùn)行結(jié)果

由運(yùn)行結(jié)果可知,ArrayList和數(shù)組索引都是從0開始的,由于ArrayList集合的底層是使用一個數(shù)組來保存元素的,在進(jìn)行增加或刪除指定位置的元素時,會導(dǎo)致創(chuàng)建一個新的數(shù)組,效率比較低,因此不適合進(jìn)行大量的增刪操作,但是可以通過索引來查找元素,這也增加了查找元素的效率。
LinkedList集合
為了解決ArrayList集合在增刪元素的效率低的問題,引入了LinkList集合,在LinkList集合的內(nèi)部維護(hù)了一個雙向的循環(huán)鏈表,鏈表的每一個元素都使用引用的方式來記住它的前一個元素和后一個元素,因此可以將所有的元素連接起來,當(dāng)插入一個新元素時,只需要修改元素之間的引用關(guān)系,這樣可以增加對于元素進(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");
//在集合的第一個位置插入元素
link.addFirst("李龍");
System.out.println(link);
//取出集合中的第一個元素
System.out.println(link.getFirst());
//刪除集合中的元素
link.remove(3);
//刪除集合中的第一個元素
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("做一個優(yōu)秀的共產(chǎn)主義接班人");
list.add("為人民服務(wù)");
list.add("做一個對社會有用的人");
Iterator it= list.iterator();
//判斷ArrayList是否存在下一個元素
while(it.hasNext()){
Object obj=it.next();
System.out.println(obj);
}
}
}運(yùn)行結(jié)果

在Iterator遍歷的過程中,首先通過hasNext()方法先去判斷集合中是否還存在下一個元素,如果存在元素,通過next()方法取出元素。
foreach循環(huán)
增強(qiáng)for循環(huán),foreach循環(huán)不需要獲得循環(huán)的長度,也不需要通過索引去訪問循環(huán)中的元素,foreach會自動的去遍歷循環(huán)中的每一個元素。
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)在遍歷集合的過程中非常方便,沒有循環(huán)條件,也沒有迭代,循環(huán)的次數(shù)是由循環(huán)中的元素個數(shù)決定的,每次循環(huán)時,增強(qiáng)for循環(huán)都通過變量將當(dāng)前循環(huán)的元素記住,從而將集合中的元素分別打印出來。
到此這篇關(guān)于Java List接口與Iterator接口及foreach循環(huán)使用解析的文章就介紹到這了,更多相關(guān)Java List接口內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java切面(Aspect)的多種實(shí)現(xiàn)方式
這篇文章主要給大家介紹了關(guān)于Java切面(Aspect)的多種實(shí)現(xiàn)方式,在Java開發(fā)中切面(Aspect)是一種常用的編程方式,用于實(shí)現(xiàn)橫切關(guān)注點(diǎn)(cross-cutting concern),需要的朋友可以參考下2023-08-08
java集合Collection實(shí)現(xiàn)類解析ArrayList?LinkedList及Vector
這篇文章主要為大家介紹了java集合Collection實(shí)現(xiàn)類解析ArrayList?LinkedList及Vector,有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-03-03
Java中的String對象數(shù)據(jù)類型全面解析
首先String不屬于8種基本數(shù)據(jù)類型,String是一個對象,因?yàn)閷ο蟮哪J(rèn)值是null,所以String的默認(rèn)值也是null;但它又是一種特殊的對象,有其它對象沒有的一些特性2012-11-11
PowerDesigner連接數(shù)據(jù)庫的實(shí)例詳解
這篇文章主要介紹了PowerDesigner連接數(shù)據(jù)庫的實(shí)例詳解的相關(guān)資料,如有疑問請留言或者到本站社區(qū)交流討論,需要的朋友可以參考下2017-10-10
Springboot訪問templates html頁面過程詳解
這篇文章主要介紹了Springboot訪問templates html頁面過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-05-05
java中l(wèi)ist.forEach()和list.stream().forEach()區(qū)別
這篇文章主要介紹了java中l(wèi)ist.forEach()和list.stream().forEach()區(qū)別,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03
com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver的區(qū)
這篇文章主要介紹了com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver的區(qū)別以及設(shè)定serverTimezone的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-09-09

