基础篇-Collection单列集合

Collection是单列集合层次结构中的根接口。一个集合代表一组对象,对象称为元素。一些集合允许重复元素,而另一些则不允许。有些是有序的,有些是无序的。 JDK 不提供此接口的任何直接实现:它提供了更具体的子接口(如 Set 和 List)的实现。此接口通常用于传递集合并在需要最大通用性的地方操作它们。
所有通用 Collection 实现类(通常通过其子接口之一间接实现 Collection)应该提供两个“标准”构造函数:一个 void(无参数)构造函数,它创建一个空集合,以及一个具有单个参数类型的构造函数集合,它创建一个具有与其参数相同的元素的新集合。实际上,后一个构造函数允许用户复制任何集合,生成所需实现类型的等效集合。没有办法强制执行此约定(因为接口不能包含构造函数),但 Java 平台库中的所有通用 Collection 实现都符合。
此接口中包含的“破坏性”方法,即修改它们操作的集合的方法,如果此集合不支持该操作,则指定为抛出 UnsupportedOperationException。在这种情况下,如果调用对集合没有影响,则这些方法可能(但不是必需)抛出 UnsupportedOperationException。例如,如果要添加的集合为空,则在不可修改的集合上调用 addAll(Collection) 方法可能(但不是必须)抛出异常。
一些集合实现对它们可能包含的元素有限制。例如,有些实现禁止空元素,有些实现对其元素的类型有限制。尝试添加不合格的元素会引发未经检查的异常,通常为 NullPointerException 或 ClassCastException。尝试查询不合格元素的存在可能会引发异常,或者可能只是返回 false;一些实现会表现出前一种行为,而另一些会表现出后者。更一般地,尝试对不合格元素执行操作,其完成不会导致将不合格元素插入到集合中,这可能会引发异常,或者可能会成功,具体取决于实现的选择。在此接口的规范中,此类异常被标记为“可选”。
由每个集合来确定自己的同步策略。在没有更强大的实现保证的情况下,未定义的行为可能是由于在另一个线程正在改变的集合上调用任何方法;这包括直接调用、将集合传递给可能执行调用的方法以及使用现有迭代器检查集合。
Collections Framework 接口中的许多方法都是根据 equals 方法定义的。例如, contains(Object o) 方法的规范说:“当且仅当此集合包含至少一个元素 e 使得 (onull ? enull : o.equals(e)) 时才返回 true .”本规范不应被解释为暗示使用非空参数 o 调用 Collection.contains 将导致为任何元素 e 调用 o.equals(e)。实现可以自由地实现优化,从而避免 equals 调用,例如,通过首先比较两个元素的哈希码。 (Object.hashCode() 规范保证哈希码不相等的两个对象不能相等。)更一般地说,各种集合框架接口的实现可以自由地利用底层对象方法的指定行为,只要实现者认为合适.
一些对集合执行递归遍历的集合操作可能会失败,但对于自引用实例(其中集合直接或间接包含自身)除外。这包括 clone()、equals()、hashCode() 和 toString() 方法。实现可以选择性地处理自引用场景,但是大多数当前的实现都没有这样做。

List(有序)
Set(无需)
Queue(先进先出)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值