当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。