2020/7/13 集合之ArrayList集合、Collection介面、Iterator迭代器
一、集合
1、集合介紹:
集合,集合是java中提供的一種容器,可以用來儲存多個數據。
在前面的學習中,我們知道資料多了,可以使用陣列存放或者使用ArrayList集合進行存放資料。那麼,集合和陣列既然都是容器,它們有啥區別呢?
陣列的長度是固定的。集合的長度是可變的。集合中儲存的元素必須是引用型別資料
2、集合的繼承實現關係:
檢視ArrayList類發現它繼承了抽象類AbstractList同時實現介面List,而List介面又繼承了Collection介面。
Collection介面為最頂層集合介面了。採集,聚集
原始碼:interfaceListextendsCollection{ } public classArrayListextends AbstractList implementsList{ }
這說明我們在使用ArrayList類時,該類已經把所有抽象方法進行了重寫。那麼,實現Collection介面的所有子類都會進行方法重寫。
Collection介面常用的子介面有:List介面、Set介面
List介面常用的子類有:ArrayList類、LinkedList類
Set介面常用的子類有:HashSet類、LinkedHashSet類
二、Collection介面的基本方法
//建立集合的格式: 方式1:Collection<元素型別>變數名= new ArrayList<元素型別>(); 方式2:Collection變數名= new ArrayList();
方式1建立的集合,只能儲存<>中指定的元素型別,該方式為常用方式
方式2建立的集合,集合的元素型別預設為Object型別,即任何型別的元素都可以儲存。
演示Collection介面中的方法
//建立集合 Collection coll = new ArrayList(); //1,往集合中新增物件元素。add(E e)方法,E代表建立集合時所指定的資料型別如<String>,那麼,E就代表String型別;建立集合時若沒有指定資料型別,那麼,E就代表Object型別。coll.add("abc"); coll.add("ef"); coll.add("g"); //把集合列印一下。 System.out.println(coll);//列印結果為:[abc, ef, g] System.out.println(coll.toString());//列印結果為:[abc, ef, g] //2,從集合中刪除元素。remove(Object o)方法 coll.remove("ef"); //刪除後,集合元素為[abc, g] //3,判斷集合中是否包含指定元素。contains(Object o)方法 System.out.println(coll.contains("abc")); //列印結果為true System.out.println(coll.contains("ef")); //列印結果為false //4,獲取集合元素個數。size()方法 System.out.println(coll.size()); //列印結果為2 //5,返回包含集合中所有元素的陣列。toArray()方法 String[] array = coll.toArray(); //陣列中的元素為{"abc","g"} //6,清除集合元素。remove()方法 coll.clear(); //清空後,集合元素為[],代表沒有元素
三、Iterator迭代器
1、概述:
java中提供了很多個集合,它們在儲存元素時,採用的儲存方式不同。我們要取出這些集合中的元素,可通過一種通用的獲取方式來完成。
Collection集合元素的通用獲取方式:在取元素之前先要判斷集合中有沒有元素,如果有,就把這個元素取出來,繼續在判斷,如果還有就再取出出來。
一直把集合中的所有元素全部取出。這種取出方式專業術語稱為迭代。
集合中把這種取元素的方式描述在Iterator介面中。Iterator介面的常用方法如下:
hasNext()方法:用來判斷集合中是否有下一個元素可以迭代。如果返回true,說明可以迭代。
next()方法:用來返回迭代的下一個元素,並把指標向後移動一位。
2、迭代元素圖解
3、Iterator迭代方式的程式碼體現
在Collection介面描述了一個抽象方法iterator方法,所有Collection子類都實現了這個方法,並且有自己的迭代形式。
進行程式碼演示:
//1,建立集合物件。 Collection<String> coll =newArrayList<String>(); coll.add("abc1"); coll.add("abc2"); coll.add("abc3"); coll.add("abc4"); //2.獲取容器的迭代器物件。通過iterator方法。 Iterator it = coll.iterator(); //3,使用具體的迭代器物件獲取集合中的元素。參閱迭代器的方法 while(it.hasNext()){ System.out.println(it.next()); } /* 迭代器for迴圈的形式的使用 for(Iterator it = coll.iterator(); it.hasNext(); ) { System.out.println(it.next()); } */
注意:在進行集合元素取出時,如果集合中已經沒有元素了,還繼續使用迭代器的next方法,將會發生java.util.NoSuchElementException沒有集合元素的錯誤。