當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java Collection Interface用法及代碼示例


集合接口是一個成員Java集合框架。它是一部分java.util包。它是集合層次結構的根接口之一。 Collection 接口不直接由任何類實現。但是,它是通過其子類型或子接口間接實現的,例如List Interface,Queue, 和

例如, HashSet類實現 Set 接口,它是 Collection 接口的子接口。如果集合實現沒有實現特定操作,則應該定義相應的方法來拋出UnsupportedOperationException.

集合的層次結構

Collection-Interface-in-Java-with-Examples

它實現了可迭代<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



相關用法


注:本文由純淨天空篩選整理自Ganeshchowdharysadanala大神的英文原創作品 Collection Interface in Java with Examples。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。