Collection<E>接口
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>接口的更多相关文章
- JDK源码阅读(三) Collection<T>接口,Iterable<T>接口
package java.util; public interface Collection<E> extends Iterable<E> { //返回该集合中元素的数量 in ...
- Java基础-Collection子接口之Set接口
Java基础-Collection子接口之Set接口 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 学习Collection接口时,记得Collection中可以存放重复元素,也可 ...
- Java基础-Collection子接口之List接口
Java基础-Collection子接口之List接口 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们掌握了Collection接口的使用后,再来看看Collection接口中 ...
- Java Collection集合接口
Collection接口是赖以集合框架建立的基础.它声明的所有集合的核心方法.这些方法概括于下表中. 因为所有集合都要实现Collection,熟悉它的方法是对框架有清晰的认识很有必要.这几种方法都可 ...
- Collection子接口(List/Set/Queue/SortedSet)
Collection基本的子接口: List:能够存放反复内容 Set:不能存放反复内容,全部反复的内容靠hashCode()和equals()两个方法区分 Queue:队列接口 SortedSet: ...
- java学习笔记——Collection集合接口
NO 方法名称 描述 1 public boolean add(E e) 向集合中保存数据 2 public void clear() 清空集合 3 public boolean contains(O ...
- java 数据结构(十):Collection子接口:Set接口
1. 存储的数据特点:无序的.不可重复的元素具体的: 以HashSet为例说明:1. 无序性:不等于随机性.存储的数据在底层数组中并非照数组索引的顺序添加,而是根据数据的哈希值决定的.2. 不可重复性 ...
- java 数据结构(九):Collection子接口:List接口
1. 存储的数据特点:存储序的.可重复的数据. 2. 常用方法:(记住)增:add(Object obj)删:remove(int index) / remove(Object obj)改:set(i ...
- Collection子接口:Set接口
1.Set 存储的数据特点:无序的.不可重复的元素具体的:以HashSet为例说明: 1. 无序性:不等于随机性.存储的数据在底层数组中并非照数组索引的顺序添加,而是根据数据的哈希值决定的. 2. 不 ...
随机推荐
- C与C++ 中 struct和typedef struct
总体分两块 1 首先://注意在C和C++里不同在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu; 于是在声明变量的时候就可:St ...
- Git常用命令详解
1.创建版本库 git clone <url> #克隆远程版本库 git init #初始化本地版本库 通过 ls -ah 可以看到隐藏的.git目录 2.修改和提交 添加文件readme ...
- zookeeper系列(五)zookeeper在大型分布式系统中的应用
作者:leesf 掌控之中,才会成功:掌控之外,注定失败. 出处:http://www.cnblogs.com/leesf456/p/6063694.html 尊重原创感谢博主公开这么好的博文, ...
- GUI输入数据并保存
from tkinter import * def write_to_file(): fileContent = open("deliveries.txt","a&quo ...
- vue使用laydate.js插件报错laydate.css: Invalid
在vue中使用laydate.js插件时可能会碰到laydate.css: Invalid这样子的一个报错 然后导致laydate日期控件无法使用. 这主要是因为laydate.js中引入的layda ...
- VLC和Qt结合编写流媒体rtsp播放器
VLC播放器是一款功能强大且小巧的播放器,它支持多种多样的音视频格式,比如MPEG1,2以及mp3等等.并且通过Qt和VLC的结合能让每个开发者写出自己的视频流媒体播放器. Q ...
- Mathematica——绘制3D图形
Plot3D Plot3D[ + y, {x, -, }, {y, -, }] ListPointPlot3D 绘制点集 ListPointPlot3D[{{, , }, {, , }}, Color ...
- win10搜索框突然不能使用了
备忘: win10搜索不出来了,使用以下方法恢复了,备忘下 1,首先打开任务管理器 重新启动wservice服务 2.发现这时候搜索依然不能使用 然后重新启动explorer.exe (1)右键关闭该 ...
- 八十:memcached之安装与参数
Memcached是一个高并发的内存键值对缓存系统,它的主要作用是将数据库查询结果,内容,以及其它一些耗时的计算结果缓存到系统内存中,从而加速Web应用程序的响应速度. 官网:http://memca ...
- C#调用SQL中存储过程并用DataGridView显示执行结果
//连接数据库 SqlConnection con = new SqlConnection("server=服务器名称;database=数据库名称;user id=登录名;pwd=登录密码 ...