java1.8 api 翻译-(001)java.util包下的Collection集合

来源:互联网 发布:淘宝咋弄选购热点 编辑:程序博客网 时间:2024/05/22 12:10

1.     Collection集合简介

1.1. 介绍

Collection是java.util包下的一个接口 InterfaceCollection<E>,参数是一个泛型。

父接口:Iterable<E>

1.2.  所有已知的子接口:

BeanContext,BeanContextServices, BlockingDeque<E>, BlockingQueue<E>,Deque<E>, List<E>, NavigableSet<E>, Queue<E>,Set<E>, SortedSet<E>, TransferQueue<E>

1.3.  所有已知的实现类:

AbstractCollection, AbstractList,AbstractQueue, AbstractSequentialList, AbstractSet, ArrayBlockingQueue,ArrayDeque, ArrayList, AttributeList, BeanContextServicesSupport,BeanContextSupport, ConcurrentHashMap.KeySetView, ConcurrentLinkedDeque,ConcurrentLinkedQueue, ConcurrentSkipListSet, CopyOnWriteArrayList,CopyOnWriteArraySet, DelayQueue, EnumSet, HashSet, JobStateReasons,LinkedBlockingDeque, LinkedBlockingQueue, LinkedHashSet, LinkedList,LinkedTransferQueue, PriorityBlockingQueue, PriorityQueue, RoleList,RoleUnresolvedList, Stack, SynchronousQueue, TreeSet, Vector

1.4.  接口简介:

public interface Collection<E> extendsIterable<E>

JDK不直接提供此接口的实现,而是提供和子接口像list和set的实现,此接口通常用来传递collection,并在需要最大普遍性的地方操作这些 collection。

包 (bag) 或多集合 (multiset)(可能包含重复元素的无序 collection)应该直接实现此接口。

    所有通用的Collection 实现类(通常通过它的一个子接口间接实现Collection)应该提供两个“标准”构造方法:一个是 void(无参数)构造方法,用于创建空 collection;另一个是带有Collection 类型单参数的构造方法,用于创建一个具有与其参数相同元素新的 collection。实际上,后者允许用户复制任何collection,以生成所需实现类型的一个等效 collection。尽管无法强制执行此约定(因为接口不能包含构造方法),但是 Java 平台库中所有通用的Collection 实现都遵从它。

此接口中包含的“破坏性”方法,是指可修改其所操作的 collection 的那些方法,如果此 collection 不支持该操作,则指定这些方法抛出UnsupportedOperationException。如果是这样,那么在调用对该collection 无效时,这些方法可能,但并不一定抛出 UnsupportedOperationException。例如,如果要添加的 collection为空且不可修改,则对该 collection 调用 addAll(Collection) 方法时,可能但并不一定抛出异常。

   一些 collection 实现对它们可能包含的元素有所限制。例如,某些实现禁止 null 元素,而某些实现则对元素的类型有限制。试图添加不合格的元素将抛出一个未经检查的异常,通常是 NullPointerException 或ClassCastException。试图查询是否存在不合格的元素可能抛出一个异常,或者只是简单地返回 false;某些实现将表现出前一种行为,而某些实现则表现后一种。较为常见的是,试图对某个不合格的元素执行操作且该操作的完成不会导致将不合格的元素插入collection 中,将可能抛出一个异常,也可能操作成功,这取决于实现本身。这样的异常在此接口的规范中标记为“可选”。

   由每个collection 来确定其自身的同步策略。在没有实现的强烈保证的情况下,调用由另一进程正在更改的 collection 的方法可能会出现不确定行为;这包括直接调用,将 collection 传递给可能执行调用的方法,以及使用现有迭代器检查 collection。

   Collections Framework 接口中的很多方法是根据 equals 方法定义的。例如,contains(Object o) 方法的规范声明:“当且仅当此 collection 包含至少一个满足 (o==null ? e==null :o.equals(e)) 的元素 e 时,返回 true。”不 应将此规范理解为它暗指调用具有非空参数 o的 Collection.contains 方法会导致为任意的e 元素调用 o.equals(e) 方法。可随意对各种实现执行优化,只要避免调用 equals 即可,例如,通过首先比较两个元素的哈希码。(Object.hashCode() 规范保证哈希码不相等的两个对象不会相等)。较为常见的是,各种 Collections Framework 接口的实现可随意利用底层 Object 方法的指定行为,而不管实现程序认为它是否合适。

    此接口是 Java CollectionsFramework 的一个成员。

从以下版本开始:

    1.2

     另请参见:

   Set, List, Map, SortedSet, SortedMap, HashSet, TreeSet, ArrayList,LinkedList, Vector, Collections, Arrays, AbstractCollection

1.5.  所有接口方法

boolean add(E e) 将指定的元素到这个列表的末尾(可选操作)。

boolean addAll(Collection<?extends E> c) 将指定集合中的所有元素添加到这个集合(可选操作)。

void clear() 移除所有元素

boolean contains(Objecto) 集合中是否包含指定元素

boolean containsAll(Collection<?>c) 集合中是否包含指定的另一个集合的所有元素

boolean equals(Objecto) 指定的对象与此集合进行比较,是否相等

int hashCode() 获取此集合的hash码

boolean isEmpty()判断此集合是否有元素

Iterator<E> iterator()  遍历集合中的元素

default Stream<E>  parallelStream() 以该集合作为源,返回一个不确定的并行流(1.8)

boolean remove(Objecto) 移除指定元素

boolean removeAll(Collection<?>c) 移除包含在指定集合中的所有集合的元素(可选操作)。

default boolean removeIf(Predicate<?super E> filter) 移除所有满足拦截条件的元素(1.8)

boolean retainAll(Collection<?>c) 仅保留集合中包含在指定集合中的元素(可选操作)。

int size()集合元素的个数

default Spliterator<E>   spliterator() 创建一个并行迭代器(1.8)

default Stream<E>  stream() 一该集合作为源返回一个顺序流(串行)(1.8)

Object[]  toArray()返回包含此集合中所有元素的数组。

<T> T[]  toArray(T[] a) 返回包含此集合中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型。

forEach 继承自interfacejava.lang.Iterable

 

原创粉丝点击