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. 简单的SSRF的学习

    自己眼中的SSRF 成因 服务端允许了 可以向其他服务器请求获取一些数据 通过各种协议 http https file等(外网服务器所在的内网进行端口的扫描指纹的识别等) 一SSRF配合redis未授 ...

  2. linux如何模糊查找一个文件

    在当前目录下搜索指定文件: find . -name test.txt 在当前目录下模糊搜索文件: find . -name '*.txt' 在当前目录下搜索特定属性的文件: find . -amin ...

  3. mysql5.7以上基本配置

    MySQL表名区分大小写设置 关闭MySQL服务 在服务运行目录找到my.ini或者my.cnf文件 find / -name my.cnf 打开文件,找到[mysqld]在下面增加一行 lower_ ...

  4. linux系统交互通道

    默认有6个命令交互通道和一个图形界面交互通道,默认进入到的是图形界面通道     命令交互模式切换:ctrl+alt+f1---f6     图形交互界面 ctrl+alt+f7 1.图形界面交互模式 ...

  5. 如何引用vue

    Vue.js 安装 https://www.runoob.com/vue2/vue-install.html 1.独立版本 我们可以在 Vue.js 的官网上直接下载 vue.min.js 并用 &l ...

  6. Appium移动自动化测试(四)之元素定位

    做过UI自动化测试的童鞋都会发现, 在上一篇文章中居然没有万能定位方式Xpath. 是滴, 确实没有! ADT自带的uiautomatorviewer里面并没有属性xpath, 如果我们需要的话,还需 ...

  7. layui相关总结

    表格操作实例1: https://sun_zoro.gitee.io/layuitableplug/testTableCheckboxDisabled?v0.1.9

  8. redis(3)主从与集群

    一.主从架构 yum安装的redis cd /etc/ cp redis.conf /etc/slave.conf vim slave.conf bind 192.168.42.7 slaveof p ...

  9. Web jsp开发学习——终极解决jsp中request和response中文乱码的问题(加个过滤器)

    中文乱码真的很烦人的.而且每次都要写,可麻烦了,而且有时候写了还不一定管用,所以我们可以试试过滤器 1.每个jsp头上当然要写上utf8啦 <%@ page language="jav ...

  10. Servlet中@WebServlet("XXXX")注解无效,访问servlet报404错误

    1.问题描述 servlet使用注解配置,经检查无错误,如图: tomcat正常启动,页面正常运行,当访问servlet时出现无响应的情况,控制台报错404,未访问到servlet. 经检查,我的错误 ...