(Java集合框架)集合框架概述和Collection常用功能及遍历
文章目錄
- 集合概述
- 集合框架
- Collection 常用功能
- 代碼演示
- 集合遍歷
- Iterator接口
- 迭代器的實現原理
- 增強for
- 代碼演示
集合概述
- 集合:集合是java中提供的一種容器,可以用來存儲多個數據。
集合和數組的區別
- 數組的長度是固定的。集合的長度是可變的。
- 數組中存儲的是同一類型的元素,可以存儲基本數據類型值。集合存儲的都是對象。而且對象的類型可以不一致。在開發中一般當對象多的時候,使用集合進行存儲。
集合框架
JAVASE提供了滿足各種需求的API,在使用這些API前,先了解其繼承與接口操作架構,才能了解何時采用哪個類,以及類之間如何彼此合作,從而達到靈活應用。
集合按照其存儲結構可以分為兩大類,分別是單列集合java.util.Collection和雙列集合java.util.Map
- Collection:單列集合類的根接口,用于存儲一系列符合某種規則的元素,它有兩個重要的子接口,分別是java.util.List和java.util.Set。其中,List的特點是元素有序、元素可重復。Set的特點是元素無序,而且不可重復。List接口的主要實現類有java.util.ArrayList和java.util.LinkedList,Set接口的主要實現類有java.util.HashSet和java.util.TreeSet。
整個集合類的繼承關系
集合本身是一個工具,它存放在java.util包中。在Collection接口定義著單列集合框架中最最共性的內容。
Collection 常用功能
Collection是所有單列集合的父接口,因此在Collection中定義了單列集合(List和Set)通用的一些方法,這些方法可用于操作所有的單列集合。方法如下:
- public boolean add(E e): 把給定的對象添加到當前集合中 。
- public void clear() :清空集合中所有的元素。
- public boolean remove(E e): 把給定的對象在當前集合中刪除。
- public boolean contains(E e): 判斷當前集合中是否包含給定的對象。
- public boolean isEmpty(): 判斷當前集合是否為空。
- public int size(): 返回集合中元素的個數。
- public Object[] toArray(): 把集合中的元素,存儲到數組中。
代碼演示
import java.util.ArrayList; import java.util.Collection;//頂層接口Collection,包含底層接口的共性方法 /** `public boolean add(E e)`: 把給定的對象添加到當前集合中 。* `public void clear()` :清空集合中所有的元素。* `public boolean remove(E e)`: 把給定的對象在當前集合中刪除。* `public boolean contains(E e)`: 判斷當前集合中是否包含給定的對象。* `public boolean isEmpty()`: 判斷當前集合是否為空。* `public int size()`: 返回集合中元素的個數。* `public Object[] toArray()`: 把集合中的元素,存儲到數組中。*/ public class Demo01Collection {public static void main(String[] args) {//創建對象,可以使用泛型Collection<String> collection = new ArrayList<>();//向集合中添加元素boolean isAdded = collection.add("伊澤瑞爾");collection.add("魔法貓咪");collection.add("瑞茲");collection.add("李青");collection.add("亞托克斯");collection.add("錘石");//判斷是否添加成功System.out.println("是否添加成功:"+isAdded);//trueSystem.out.println(collection);//[伊澤瑞爾, 魔法貓咪, 瑞茲, 李青, 亞托克斯, 錘石]//刪除錘石boolean isRemoved = collection.remove("錘石");//判斷是否刪除成功System.out.println("是否刪除成功:"+isRemoved);//trueSystem.out.println(collection);//[伊澤瑞爾, 魔法貓咪, 瑞茲, 李青, 亞托克斯]//判斷集合中是否含有伊澤瑞爾boolean isContain = collection.contains("伊澤瑞爾");System.out.println("集合中是否包含伊澤瑞爾:"+isContain);//true//判斷集合是否為空boolean isEmpty = collection.isEmpty();System.out.println("集合是否為空:"+isEmpty);//false//輸出集合中元素的個數int size = collection.size();System.out.println("集合中元素個數:"+size);//5//將集合轉換為數組Object[] array = collection.toArray();//遍歷數組System.out.print("遍歷數組結果: ");for (int i = 0; i <array.length ; i++) {System.out.print(array[i]+" ");}System.out.println();//清空集合中所有元素collection.clear();System.out.println("清空結果:"+collection);} }結果截圖:
集合遍歷
Iterator接口
在程序開發中,經常需要遍歷集合中的所有元素。針對這種需求,JDK專門提供了一個接口java.util.Iterator。Iterator接口也是Java集合中的一員,但它與Collection、Map接口有所不同,Collection接口與Map接口主要用于存儲元素,而Iterator主要用于迭代訪問(即遍歷)Collection中的元素,因此Iterator對象也被稱為迭代器。
想要遍歷Collection集合,那么就要獲取該集合迭代器完成迭代操作,下面介紹一下獲取迭代器的方法:
- public Iterator iterator(): 獲取集合對應的迭代器,用來遍歷集合中的元素的。
下面介紹一下迭代的概念:
- 迭代:即Collection集合元素的通用獲取方式。在取元素之前先要判斷集合中有沒有元素,如果有,就把這個元素取出來,繼續在判斷,如果還有就再取出出來。一直把集合中的所有元素全部取出。這種取出方式專業術語稱為迭代。
Iterator接口的常用方法如下:
- public E next():返回迭代的下一個元素。
- public boolean hasNext():如果仍有元素可以迭代,則返回 true。
tips::在進行集合元素取出時,如果集合中已經沒有元素了,還繼續使用迭代器的next方法,將會發生java.util.NoSuchElementException沒有集合元素的錯誤。
迭代器的實現原理
我們在之前案例已經完成了Iterator遍歷集合的整個過程。當遍歷集合時,首先通過調用t集合的iterator()方法獲得迭代器對象,然后使用hashNext()方法判斷集合中是否存在下一個元素,如果存在,則調用next()方法將元素取出,否則說明已到達了集合末尾,停止遍歷元素。
Iterator迭代器對象在遍歷集合時,內部采用指針的方式來跟蹤集合中的元素。
在調用Iterator的next方法之前,迭代器的索引位于第一個元素之前,不指向任何元素,當第一次調用迭代器的next方法后,迭代器的索引會向后移動一位,指向第一個元素并將該元素返回,當再次調用next方法時,迭代器的索引會指向第二個元素并將該元素返回,依此類推,直到hasNext方法返回false,表示到達了集合的末尾,終止對元素的遍歷。
增強for
增強for循環(也稱for each循環)是JDK1.5以后出來的一個高級for循環,專門用來遍歷數組和集合的。它的內部原理其實是個Iterator迭代器,所以在遍歷的過程中,不能對集合中的元素進行增刪操作。
格式:
for(元素的數據類型 變量 : Collection集合or數組){ //寫操作代碼 }它用于遍歷Collection和數組。通常只進行遍歷元素,不要在遍歷的過程中對集合元素進行增刪操作。
代碼演示
package com.company.demo06.Collection;import java.util.ArrayList; import java.util.Collection; import java.util.Iterator;public class Demo02Traverse {public static void main(String[] args) {//創建集合Collection collection=createCollection();//用iterator遍歷集合traverseIterator(collection);//用增強fro遍歷集合tranverseFor(collection);}private static void tranverseFor(Collection<String> collection) {System.out.println("----------------增強for遍歷------------------");for (String c:collection) {System.out.print(c+" ");}}/** `public E next()`:返回迭代的下一個元素。* `public boolean hasNext()`:如果仍有元素可以迭代,則返回 true。*/private static void traverseIterator(Collection<String> collection) {System.out.println("----------------Iterator遍歷------------------");//多態創建Iterator對象Iterator<String> iterator = collection.iterator();while (iterator.hasNext()){System.out.print(iterator.next()+" ");}System.out.println();}private static Collection<String> createCollection() {Collection<String > collection = new ArrayList<>();//添加元素collection.add("無盡之刃");collection.add("飲血劍");collection.add("破敗王者之刃");collection.add("幻影之舞");collection.add("魔宗");return collection;} }結果
tips: 新for循環必須有被遍歷的目標。目標只能是Collection或者是數組。新式for僅僅作為遍歷操作出現。
總結
以上是生活随笔為你收集整理的(Java集合框架)集合框架概述和Collection常用功能及遍历的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (仿头条APP项目)2.主界面按钮切换F
- 下一篇: Adapter适配器和base-adap