Java集合-Collection

喝水會長肉發表於2021-11-24

Collection介面是 (java.util.Collection)是Java集合類的頂級介面之一。所以不能直接例項化一個Collection,但是可以例項化它的一個子類,你或許經常把這些子類作為一個Collection統一探討。在這篇文章中,你將看到如何處理。


下面是本文的一個主題列表:

  1. Collection子類

  2. 增加和移除元素

  3. 檢測一個Collection是否包含一個確定的元素

  4. Collection大小

  5. 遍歷一個Collection

Collection子類
下面的介面繼承了Collection介面:

  1. List

  2. Set

  3. SortedSet

  4. NavigableSet

  5. Queue

  6. Deque

Java沒有一個可用的Collection介面的實現,所以你必須使用上述列表中的子類。Collection介面僅僅只是定義了每個子類共享的一系列方法。這使得忽略你具體使用的Collection型別而把他們當作一個Collection統一對待成為可能。這是一個標準的繼承,沒有什麼神奇之處,但是有時候會成為一個很好的特性。本文的後面部分將描述這些常用操作的大部分使用方法。

下面是一個Collection操作的一個方法:

public class MyCollectionUtil{   public static void doSomething(Collection collection) {     Iterator iterator = collection.iterator();     while(iterator.hasNext()){       Object object = iterator.next();       //do something to object here...     }   } }


下面是呼叫不用型別的Collection子類的方法的一些方式:

Set  set  = new HashSet(); List list = new ArrayList(); MyCollectionUtil.doSomething(set); MyCollectionUtil.doSomething(list);

增加和移除元素

不管你使用的是哪種型別的Collection子類,有一些標準的方法從一個Collection中增加和移除元素。增加和移除單個的元素就像下面這樣:

String     anElement  = "an element"; Collection collection = new HashSet(); boolean didCollectionChange = collection.add(anElement); boolean wasElementRemoved   = collection.remove(anElement);

add()方法向Collection中增加元素,如果Collection結構改變了,作為 add()方法的結果,將返回true。如果一個 Set的例項中已經存在了這個元素,那麼不會重複增加,這個 Set例項的結構也不會發生變化。另一方面,如果在一個 List上呼叫這個方法,而這個 List已經存在了這個元素,那麼這個 List將有兩個這個元素。

remove()方法移除一個元素。如果Collection中存在這個元素並且被移除了,這個方法將返回true。如果元素不存在,將返回false。

你也可以增加和移除Collection物件,下面是一些示例:

String     anElement  = "an element"; Collection collection = new HashSet(); boolean didCollectionChange = collection.add(anElement); boolean wasElementRemoved   = collection.remove(anElement);


addAll()方法增加通過引數傳遞過來的Collection中的所有元素。這個Collection物件本身不會被新增,僅僅只是新增它的元素。但是如果你呼叫 add()方法傳遞這個引數,這個Collection物件本身將被新增,而不是它的元素。

正是由於 addAll()方法依賴於Collection的子類。有一些子類允許一樣的元素被多次新增,而另外一些則不允許。

removeAll()方法移除通過引數傳遞過來的Collection中的所有元素。如果傳遞過來的Collection中某些元素在目標Collection中不存在,這些元素將會忽略。

retainAll()方法正好和 removeAll()方法相反。不是移除所有給定引數Collection中元素,而是保留保留這些元素,移除其他的。記住,只有目標Collection中已經存在了這些元素,這些元素才可以保留。在引數Collection中存在而目標Collection中不存在的元素,將不會被新增到目標Collection。它們將被忽略:

來看看一些使用虛擬碼的例子:

//java學習交流:737251827  進入可領取學習資源及對十年開發經驗大佬提問,免費解答! Collection colA = [A,B,C] Collection colB = [1,2,3] Collection target = []; target.addAll(colA);     //target now contains [A,B,C] target.addAll(colB);     //target now contains [A,B,C,1,2,3] target.retainAll(colB);  //target now contains [1,2,3] target.removeAll(colA);  //nothing happens - already removed target.removeAll(colB);  //target is now empty.


檢測一個Collection是否包含一個確定的元素

Collection介面有兩個方法來檢查一個Collection是否包含一個或多個元素。這就是 contains()containsAll()方法。它們在下面被說明:

Collection collection   = new HashSet(); boolean containsElement = collection.contains("an element"); Collection elements     = new HashSet(); boolean containsAll     = collection.containsAll(elements);


如果這個Collection含有這個元素, contains()方法將返回true,反之,則亦然。
如果這個Collection包含給定Collection引數中的所有元素, containsAll()方法將返回true,反之,則亦然。

Collection大小

你可以通過呼叫 size()方法來檢測一個Collection的大小,”Size“表示Collection中的元素個數,下面是一個示例:

1int numberOfElements = collection.size();

迭代一個Collection

你可以迭代collection中的所有元素,collection中包含的Iterator將完成這件事情,就像下面這樣:

Collection collection = new HashSet(); //... add elements to the collection Iterator iterator = collection.iterator(); while(iterator.hasNext()){     Object object = iterator.next();     //do something to object; }


你也可以使用新的for迴圈:

view sourceprint?

Collection collection = new HashSet(); //... add elements to the collection for(Object object : collection) {   //do something to object; }


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70010294/viewspace-2843884/,如需轉載,請註明出處,否則將追究法律責任。

相關文章