Java集合-Collection
Collection介面是 (java.util.Collection)是Java集合類的頂級介面之一。所以不能直接例項化一個Collection,但是可以例項化它的一個子類,你或許經常把這些子類作為一個Collection統一探討。在這篇文章中,你將看到如何處理。
下面是本文的一個主題列表:
-
Collection子類
-
增加和移除元素
-
檢測一個Collection是否包含一個確定的元素
-
Collection大小
-
遍歷一個Collection
Collection子類
下面的介面繼承了Collection介面:
-
List
-
Set
-
SortedSet
-
NavigableSet
-
Queue
-
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java:Collection集合、泛型Java泛型
- Java Collection集合面試題Java面試題
- Java Collection介面 ArrayList集合(容器)Java
- Java 的 Collection 與 List 集合Java
- Java Collection、Map集合總結Java
- Java 集合深入理解(3):CollectionJava
- 【Java集合】單列集合Collection常用方法詳解Java
- 集合框架-Collection集合框架
- 集合框架-Collection集合-2框架
- 集合框架-Collection集合-3框架
- JAVA集合詳解(Collection和Map介面)Java
- 集合框架-Collection集合總結框架
- Android基礎之Java集合框架CollectionAndroidJava框架
- Java 基礎(三)集合原始碼解析 CollectionJava原始碼
- 「譯」Java集合框架系列教程三:Collection介面Java框架
- Java學習--java中的集合框架、Collection介面、list介面Java框架
- 集合框架小結-Collection框架
- Collection集合的遍歷
- Java集合 Collection、Set、Map、泛型 簡要筆記Java泛型筆記
- java.util.Collection集合方法:Collections.BinarySearch 方法Java
- Swift之集合型別 (Collection Types)(集合篇)Swift型別
- 【Java】【集合】collection介面常見方法、集合轉陣列toArray()、帶ALL的方法Java陣列
- Java集合系列之Collection與Map介面巨集觀把控Java
- Java Stream和Collection比較:何時以及如何從Java API返回Stream而不是集合Collection? - TomaszKiełbowiczJavaAPI
- thinkphp5.x之Collection(集合)解析php集合PHP
- Java學習關於集合框架的基礎介面--Collection介面Java框架
- 十五個常用的 Laravel 集合(Collection)Laravel
- 15個常用的Laravel 集合(Collection)Laravel
- 集合------集合框架Collection/Iterator迭代器/增強for迴圈框架
- Java中Collection Frame中常用集合簡析(ArrayList,Vector,HashSet,TreeSet...)Java
- 教程:Laravel 集合(Collection)的基礎用法Laravel
- 集合原始碼分析[1]-Collection 原始碼分析原始碼
- Java™ 教程(Collection介面)Java
- [Java基礎]collectionJava
- java9第5篇-Collection集合類的增強與優化Java優化
- list 列表(屬於集合collection中的一種)
- 【Java基礎】--Java容器剖析:collection容器Java
- Java Collection或Map的同步Java