List接口繼承Collection接口,屬於單列集合,在List集合中允許出現重複的元素,所有的元素是以一種線性方式進行存儲的,在程式中透過索引來存取集合中的指定元素,元素是順序儲存的,即元素的存入順序和取出順序一致。
ArrayList是List介面的實作類,在ArrayList內部封裝了一個長度可變的陣列物件。
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)); } }
運行結果
由運行結果可知,ArrayList和陣列索引都是從0開始的,由於ArrayList集合的底層是使用一個陣列來保存元素的,在進行增加或刪除指定位置的元素時,會導致創建一個新的數組,效率比較低,因此不適合進行大量的增刪操作,但是可以通過索引來查找元素,這也增加了查找元素的效率。
為了解決ArrayList集合在增刪元素的效率低的問題,引入了LinkList集合,在LinkList集合的內部維護了一個雙向的循環鍊錶,鍊錶的每一個元素都使用引用的方式來記住它的前一個元素和後一個元素,因此可以將所有的元素連接起來,當插入一個新元素時,只需要修改元素之間的引用關係,這樣可以增加對於元素進行增刪操作的效率。
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); } }
運行結果
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("好好学习"); list.add("做一个优秀的共产主义接班人"); list.add("为人民服务"); list.add("做一个对社会有用的人"); Iterator it= list.iterator(); //判断ArrayList是否存在下一个元素 while(it.hasNext()){ Object obj=it.next(); System.out.println(obj); } } }
運行結果
在Iterator遍歷的過程中,首先透過hasNext()方法先去判斷集合中是否還存在下一個元素,如果存在元素,透過next()方法取出元素。
增強for循環,foreach循環不需要獲得循環的長度,也不需要透過索引去存取循環中的元素,foreach會自動的去遍歷循環中的每一個元素。
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); } } }
運行結果
可以看出,增強for迴圈在遍歷集合的過程中非常方便,沒有循環條件,也沒有迭代,循環的次數是由迴圈中的元素個數決定的,每次迴圈時,增強for迴圈都會透過變數將目前迴圈的元素記住,從而將集合中的元素分別列印出來。
以上是Java List介面、Iterator介面與foreach迴圈的使用方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!