集合接口是一個成員Java集合框架。它是一部分java.util包。它是集合層次結構的根接口之一。 Collection 接口不直接由任何類實現。但是,它是通過其子類型或子接口間接實現的,例如List Interface,Queue, 和放。
例如, HashSet類實現 Set 接口,它是 Collection 接口的子接口。如果集合實現沒有實現特定操作,則應該定義相應的方法來拋出UnsupportedOperationException.
集合的層次結構
它實現了可迭代<E>接口。集合的 sub-interfaces 是BeanContext,BeanContextServices,阻塞雙端隊列<E>,BlockingQueue,雙端隊列<E>,EventSet,List Interface,導航集<E>,Queue,設置<E>,SortedSet Interface,傳輸隊列<E>.
采集接口SubInterfaces
集合框架的所有類都實現集合接口的子接口。 Collection接口的所有方法也包含在它的子接口中。這些子接口有時稱為集合類型或集合的SubTypes。其中包括以下內容:
List:這是集合接口的子接口。該接口專用於列表類型的數據,我們可以在其中存儲所有對象的有序集合。這也允許其中存在重複數據。該列表接口由各種類實現,例如ArrayList,Vector,Stack等等。由於所有子類都實現了列表,因此我們可以使用這些類中的任何一個來實例化列表對象。例如,
List <T> al = new ArrayList<> ();
List <T> ll = new LinkedList<> ();
List <T> v = new Vector<> ();
Where T is the type of the object
放:集合是對象的無序集合,其中不能存儲重複值。當我們希望避免對象的重複並希望僅存儲唯一的對象時,可以使用此集合。這個集合接口由各種類實現,例如HashSet,TreeSet,LinkedHashSet等等。由於所有子類都實現了集合,因此我們可以使用這些類中的任何一個來實例化集合對象。例如,
Set<T> hs = new HashSet<> ();
Set<T> lhs = new LinkedHashSet<> ();
Set<T> ts = new TreeSet<> ();
Where T is the type of the object.
SortedSet:這個接口和設置接口很相似。唯一的區別是這個接口有額外的方法來維護元素的順序。 Sorted Set接口擴展了Set接口,用於處理需要排序的數據。實現該接口的類是TreeSet。由於此類實現了 SortedSet,因此我們可以使用此類實例化 SortedSet 對象。例如,
SortedSet<T> ts = new TreeSet<> ();
Where T is the type of the object.
隊列:顧名思義,隊列接口維護 FIFO(先進先出)順序,類似於 real-world 隊列。該接口專用於存儲元素順序重要的所有元素。例如,每當我們嘗試預訂機票時,門票都是按照先到先得的原則出售的。因此,請求最先到達隊列的人將獲得票證。有各種各樣的課程,例如PriorityQueue,雙端隊列,ArrayDeque等等。由於所有這些子類都實現了隊列,因此我們可以使用這些類中的任何一個來實例化隊列對象。例如,
Queue <T> pq = new PriorityQueue<> ();
Queue <T> ad = new ArrayDeque<> ();
Where T is the type of the object.
雙端隊列: 這是一個非常微小的變化隊列數據結構.雙端隊列也稱為雙端隊列,是一種可以在隊列兩端添加和刪除元素的數據結構。該接口擴展了隊列接口。實現該接口的類是ArrayDeque。由於該類實現了雙端隊列,因此我們可以用該類實例化一個雙端隊列對象。例如,
Deque<T> ad = new ArrayDeque<> ();
Where T is the type of the object.
聲明:
public interface Collection<E> extends Iterable<E>
這裏,E是集合中存儲的元素的類型。
例子:
Java
// Java program to illustrate Collection interface
import java.io.*;
import java.util.*;
public class CollectionDemo {
public static void main(String args[])
{
// creating an empty LinkedList
Collection<String> list = new LinkedList<String>();
// use add() method to add elements in the list
list.add("Geeks");
list.add("for");
list.add("Geeks");
// Output the present list
System.out.println("The list is: " + list);
// Adding new elements to the end
list.add("Last");
list.add("Element");
// printing the new list
System.out.println("The new List is: " + list);
}
}
The list is: [Geeks, for, Geeks] The new List is: [Geeks, for, Geeks, Last, Element]
實現類
Collection接口的實現是AbstractCollection,AbstractList,AbstractQueue,AbstractSequentialList,AbstractSet Class,ArrayBlockingQueue,ArrayDeque,ArrayList,AttributeList,BeanContextServicesSupport,BeanContextSupport, ConcurrentHashMap.KeySetView,ConcurrentLinkedDeque,ConcurrentLinkedQueue,ConcurrentSkipListSet,CopyOnWriteArrayList,CopyOnWriteArraySet,DelayQueue Class,EnumSet,HashSet,JobStateReasons,LinkedBlockingDeque,LinkedBlockingQueue,LinkedHashSet,LinkedList,LinkedTransferQueue,PriorityBlockingQueue,PriorityQueue,RoleList,RoleUnresolvedList,堆,SynchronousQueue,TreeSet,Vector.
用法:
Collection<E> objectName = new ArrayList<E>();
這裏,E是集合中存儲的元素的類型。
注意:在上麵的語法中,如果任何類實現了 Collection 接口,我們可以用 ArrayList 替換該類。
Basic Operations
1. 添加元素
Collection提供的add(E e)和addAll(Collection c)方法可用於添加元素。
Java
// Java code to illustrate adding
// elements to the Collection
import java.io.*;
import java.util.*;
public class AddingElementsExample {
public static void main(String[] args)
{
// create an empty array list with an initial
// capacity
Collection<Integer> list1 = new ArrayList<Integer>(5);
// use add() method to add elements in the list
list1.add(15);
list1.add(20);
list1.add(25);
// prints all the elements available in list
for (Integer number : list1) {
System.out.println("Number = " + number);
}
// Creating an empty ArrayList
Collection<Integer> list2 = new ArrayList<Integer>();
// Appending the collection to the list
list2.addAll(list1);
// displaying the modified ArrayList
System.out.println("The new ArrayList is: " + list2);
}
}
Number = 15 Number = 20 Number = 25 The new ArrayList is: [15, 20, 25]
2. 刪除元素
remove(E e) 和removeAll(Collection c) 方法可用於從集合中刪除特定元素或元素集合。
Java
// Java program to demonstrate removing
// elements from a Collection
import java.util.*;
public class RemoveElementsExample {
public static void main(String[] argv) throws Exception
{
// Creating object of HashSet<Integer>
Collection<Integer> set1 = new HashSet<Integer>();
// Populating arrset1
set1.add(1);
set1.add(2);
set1.add(3);
set1.add(4);
set1.add(5);
// print set1
System.out.println("Initial set1 : " + set1);
// remove a particular element
set1.remove(4);
// print modified set1
System.out.println("set1 after removing 4 : " + set1);
// Creating another object of HashSet<Integer>
Collection<Integer> set2 = new HashSet<Integer>();
set2.add(1);
set2.add(2);
set2.add(3);
// print set2
System.out.println("Collection Elements to be removed : " + set2);
// Removing elements from set1
// specified in set2
// using removeAll() method
set1.removeAll(set2);
// print arrset1
System.out.println("set 1 after removeAll() operation : " + set1);
}
}
Initial set1 : [1, 2, 3, 4, 5] set1 after removing 4 : [1, 2, 3, 5] Collection Elements to be removed : [1, 2, 3] set 1 after removeAll() operation : [5]
3. 迭代
要迭代 Collection 的元素,我們可以使用 iterator() 方法。
Java
// Java code to illustrate iterating
// over a Collection
import java.util.*;
public class IteratingExample {
public static void main(String[] args)
{
// Create and populate the list
Collection<String> list = new LinkedList<>();
list.add("Geeks");
list.add("for");
list.add("Geeks");
list.add("is");
list.add("a");
list.add("CS");
list.add("Students");
list.add("Portal");
// Displaying the list
System.out.println("The list is: " + list);
// Create an iterator for the list
// using iterator() method
Iterator<String> iter = list.iterator();
// Displaying the values after iterating
// through the list
System.out.println("\nThe iterator values" + " of list are: ");
while (iter.hasNext()) {
System.out.print(iter.next() + " ");
}
}
}
The list is: [Geeks, for, Geeks, is, a, CS, Students, Portal] The iterator values of list are: Geeks for Geeks is a CS Students Portal
Methods of Collection
METHOD |
DESCRIPTION |
---|---|
Collection add() | 確保此集合包含指定的元素(可選操作)。 |
addAll(集合 <? 擴展 E> c) | 將指定集合中的所有元素添加到此集合中(可選操作)。 |
Collection clear() | 從此集合中刪除所有元素(可選操作)。 |
Collection contains() | 如果此集合包含指定元素,則返回 true。 |
containsAll(集合<?> c) | 如果此集合包含指定集合中的所有元素,則返回 true。 |
equals(Object o) | 比較指定對象與此集合是否相等。 |
hashCode() | 返回此集合的哈希碼值。 |
isEmpty() | 如果此集合不包含任何元素,則返回 true。 |
iterator() | 返回此集合中元素的迭代器。 |
parallelStream() | 返回一個可能並行的 Stream 並以此集合作為其源。 |
remove(Object o) | 從此集合中刪除指定元素的單個實例(如果存在)(可選操作)。 |
移除全部(集合<?> c) | 刪除指定集合中也包含的所有該集合的元素(可選操作)。 |
removeIf(Predicate<? super E> 過濾器) | 刪除此集合中滿足給定謂詞的所有元素。 |
keepAll(集合<?> c) | 僅保留此集合中包含在指定集合中的元素(可選操作)。 |
size() | 返回此集合中的元素數量。 |
spliterator() | 在此集合中的元素上創建一個 Spliterator。 |
stream() | 返回以此集合作為源的順序 Stream。 |
toArray() | 返回一個包含此集合中所有元素的數組。 |
toArray(IntFunction<T[]> 生成器) | 返回一個包含此集合中所有元素的數組,使用提供的生成器函數分配返回的數組。 |
toArray(T[] a) | 返回一個包含該集合中所有元素的數組;返回數組的運行時類型是指定數組的運行時類型。 |
接口 java.lang.Iterable 中聲明的方法
METHOD |
DESCRIPTION |
---|---|
Iterable forEach() | 對 Iterable 的每個元素執行給定的操作,直到處理完所有元素或該操作引發異常。 |
參考:https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Collection.html
相關用法
- Java Collection containsAll()用法及代碼示例
- Java Collection equals()用法及代碼示例
- Java Collection hashCode()用法及代碼示例
- Java Collection iterator()用法及代碼示例
- Java Collection remove()用法及代碼示例
- Java Collection removeAll()用法及代碼示例
- Java Collection removeIf()用法及代碼示例
- Java Collection retainAll()用法及代碼示例
- Java Collection size()用法及代碼示例
- Java Collection spliterator()用法及代碼示例
- Java Collection toArray()用法及代碼示例
- Java Collection add()用法及代碼示例
- Java Collection addAll()用法及代碼示例
- Java Collection clear()用法及代碼示例
- Java Collection contains()用法及代碼示例
- Java Collection isEmpty()用法及代碼示例
- Java Collections binarySearch()用法及代碼示例
- Java Collections checkedNavigableMap()用法及代碼示例
- Java Collections checkedNavigableSet()用法及代碼示例
- Java Collections checkedQueue()用法及代碼示例
- Java Collections disjoint()用法及代碼示例
- Java Collections emptyEnumeration()用法及代碼示例
- Java Collections emptyIterator()用法及代碼示例
- Java Collections emptyList()用法及代碼示例
- Java Collections emptyListIterator()用法及代碼示例
注:本文由純淨天空篩選整理自Ganeshchowdharysadanala大神的英文原創作品 Collection Interface in Java with Examples。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。