https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html

  

  public interface Collection<E> extends Iterable<E>

  E,代表这个集合中的元素类型。

  父接口:Iterable<E>

  子接口:BeanContext, BeanContextServices, BlockingDeque<E>, BlockingQueue<E>, Deque<E>, List<E>, NavigableSet<E>, Queue<E>, Set<E>, SortedSet<E>, TransferQueue<E>

  

  一、简介

  Collection<E>是Java集合框架的一个根接口(另一个是Map)。

  JDK并不提供此接口的任何直接实现(类),而是提供了Collection接口的一些子接口的实现,如Set接口和List接口。所以这个接口通常用来在需要最大通用性的地方传递集合并对其进行操作。

  Bags or multisets(可能包含重复元素的无序集合),应该直接实现这个接口。

  所有一般用途的Collection实现(类) (通常是通过Collection接口的子接口间接实现),都应该提供两个标准构造函数:

  • 第一个,一个无参构造函数,用来创建一个空的集合
  • 第二个,一个有单个Collection类型的参数的构造函数,用来创建一个新集合,包含和它的参数类型一致的元素。

  实际上,第二种构造函数允许用户复制任何集合,来生成所需实现类型的等效集合。当然你也没法强制执行这个规约,因为接口不包含构造函数,但Java平台库中的所有通常用途的Collection实现(类)都遵守这个规约。

  此接口中的  "破坏性 " 方法 (即修改它们所操作的集合的方法) 被指定为在该集合不支持该操作时抛出 UnsupportedOperationException异常。但如果方法的调用对集合没有影响,则这些方法可能(但不是一定)抛出UnsupportedOperationException。例如, 如果要添加的集合为空, 则在不可修改集合上调用 addAll (Collection) 方法可能 (但不是一定) 引发异常。

  某些集合实现对它们可能包含的元素有限制。例如, 某些实现禁止空元素, 有些则对其元素的类型有限制。

  尝试添加不合格的元素会引发未检查的异常, 通常为 NullPointerException or ClassCastException。

  尝试查询不合格元素的存在可能引发异常, 也可能只是返回 false。一些实现将展示前者的行为, 有些将展示后者。

  通常,尝试对不合格元素进行操作可能会成功,也可能引发异常。但是其完成不会导致将不合格的元素插入到集合中

  每种集合可以自定义它的同步策略。

  在没有实现类的强保证下,调用一个正在被其它线程(占用)修改的集合中的方法可能导致未知的行为,这包括直接调用、将集合传递给可能执行调用的方法以及使用现有迭代器检查集合。

  集合框架接口中的许多方法是根据equals方法定义的。例如,contains(Object o)方法的规范指出“当且仅当这个集合包含至少一个这样的e元素时(o==null?e==null:o.equals(e)),返回true”。这条规范不应被解释为它表明使用非空参数o调用Collection.contains()方法时,将导致操作o.equals(e)对每个元素e都进行(有至少一个就行了)。

  实现类则可以自由地进行优化,从而避免调用equals方法。例如,比较两个元素(对象)的hashcode(两个hashcode不相等的object,我们定义为不相等)。

  更普遍地,集合框架中不同接口的实现类可以自由地在合适的地方利用Object抽象类中指定的方法。

  对集合执行递归遍历的某些集合操作可能会因为该集合直接或者间接包含自身引用的实例而失败,也会有一个异常提示这种情况。

  默认的方法实现(如通过继承获得)不适用与任何的同步协议,如果一个集合实现类有一个特定的同步协议,那么它必须重写这些默认的方法,以可以适配相应的同步协议。

  二、接口方法

  1、int size()

  2、boolean isEmpty()

  3、boolean contains(Object o)

  4、Iterator<E> iterator()

  5、Object[] toArray()

  6、<T> T[] toArray(T[] a)

  7、boolean add(E e)

  8、boolean remove(Object o)

  9、boolean containsAll(Collection<?> c)

  10、boolean addAll(Collection<? extends E> c)

  11、boolean removeAll(Collection<?> c)

  12、default boolean removeIf(Predicate<? super E> filter)

  13、boolean retainAll(Collection<?> c)

  14、void clear()

  15、boolean equals(Object o)

  16、int hashCode()

  17、default Spliterator<E> spliterator()

  18、default Stream<E> stream()

  19、default Stream<E> parallelStream()

  

  

Collection<E>接口的更多相关文章

  1. JDK源码阅读(三) Collection<T>接口,Iterable<T>接口

    package java.util; public interface Collection<E> extends Iterable<E> { //返回该集合中元素的数量 in ...

  2. Java基础-Collection子接口之Set接口

    Java基础-Collection子接口之Set接口 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 学习Collection接口时,记得Collection中可以存放重复元素,也可 ...

  3. Java基础-Collection子接口之List接口

    Java基础-Collection子接口之List接口 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们掌握了Collection接口的使用后,再来看看Collection接口中 ...

  4. Java Collection集合接口

    Collection接口是赖以集合框架建立的基础.它声明的所有集合的核心方法.这些方法概括于下表中. 因为所有集合都要实现Collection,熟悉它的方法是对框架有清晰的认识很有必要.这几种方法都可 ...

  5. Collection子接口(List/Set/Queue/SortedSet)

    Collection基本的子接口: List:能够存放反复内容 Set:不能存放反复内容,全部反复的内容靠hashCode()和equals()两个方法区分 Queue:队列接口 SortedSet: ...

  6. java学习笔记——Collection集合接口

    NO 方法名称 描述 1 public boolean add(E e) 向集合中保存数据 2 public void clear() 清空集合 3 public boolean contains(O ...

  7. java 数据结构(十):Collection子接口:Set接口

    1. 存储的数据特点:无序的.不可重复的元素具体的: 以HashSet为例说明:1. 无序性:不等于随机性.存储的数据在底层数组中并非照数组索引的顺序添加,而是根据数据的哈希值决定的.2. 不可重复性 ...

  8. java 数据结构(九):Collection子接口:List接口

    1. 存储的数据特点:存储序的.可重复的数据. 2. 常用方法:(记住)增:add(Object obj)删:remove(int index) / remove(Object obj)改:set(i ...

  9. Collection子接口:Set接口

    1.Set 存储的数据特点:无序的.不可重复的元素具体的:以HashSet为例说明: 1. 无序性:不等于随机性.存储的数据在底层数组中并非照数组索引的顺序添加,而是根据数据的哈希值决定的. 2. 不 ...

随机推荐

  1. 关于我&留言板

    在下高一OIer一枚,就读于SC的一所发展中学(ruo)校 对二次元什么的,有着淡淡的喜爱 初三的时候入了古风的坑,想变得文艺一点,可爱一点 也会听歌,但听得不多(主要是听新歌比较随缘),范围窄(古风 ...

  2. Hadoop-2.7.5完全分布式搭建

    1.在虚拟机上安装Hadoop完全分布式准备工作 1)这里使用的是VMWare软件,在VMWare上安装一个CentOS6.5,并再克隆两个机器配置相关MAC地址,以及配置机器名 2)三台虚拟机配置好 ...

  3. 石川es6课程---12、Promise

    石川es6课程---12.Promise 一.总结 一句话总结: 用同步的方式来书写异步代码,让异步书写变的特别简单 用同步的方式来书写异步代码Promise 让异步操作写起来,像在写同步操作的流程, ...

  4. selenium_java

    等待 页面全加载 ChromeOptions options=new ChromeOptions(); /** *(1) NONE: 当html下载完成之后,不等待解析完成,selenium会直接返回 ...

  5. 学习 C++ 读什么书

    C++ 看什么书? 很多莘莘学子,想要在这条路上前进,却是踽踽独行,摸不到门路.就像我当初是一样的.在没有一个前辈带路的情况下,想要自己一个人摸索前进,那份迷茫,深深的刻进自己的记忆里.     下面 ...

  6. mips调试

    0x01 环境搭建 由于我们通常的操作系统指令集都是x86的,所以无法跑MIPS程序.这时候就需要装QEMU来模拟,QEMU通过源码编译较为复杂,我们又没有特殊的需求,所以直接使用ubuntu的APT ...

  7. jsp部分

    1,struts2下拉框,直接赋值.<s:select list="#{'':'---请选择---','0':'否','1':'是'}"listKey="key&q ...

  8. 如何在VUE中使用leaflet地图框架

    前言:在leaflet的官方文档只有静态的HTML演示并没有结合VUE的demo  虽然也有一些封装好的leaflet库例如Vue-Leaflet,但是总感觉用起来不是那么顺手,有些业务操作还是得用l ...

  9. SqlServer try catch 捕获触发器\存储过程异常,结合 transaction 事务

    SoEasy~,贴上代码看所有 ALTER trigger [dbo].[tgr_SG_Gathering_update] on [dbo].[SG_Gathering] for update --更 ...

  10. mysql数据库为什么要分表和分区?

    一般下载的源码都带了MySQL数据库的,做个真正意义上的网站没数据库肯定不行. 数据库主要存放用户信息(注册用户名密码,分组,等级等),配置信息(管理权限配置,模板配置等),内容链接(html ,图片 ...