Collection接口的子接口——Set接口
https://docs.oracle.com/javase/8/docs/api/java/util/Set.html
public interface Set<E> extends Collection<E>
E是Set管理的元素类型。
父接口:Collection<E>, Iterable<E>
子接口:NavigableSet<E>, SortedSet<E>
实现类:EnumSet,HashSet,LinkedHashSet,TreeSet
一、简介
顾名思义,Set接口是对数学集的抽象建模。
Set是一个不包含重复元素的容器,允许元素为null值(最多存在一个null元素)。Set没有强制其中的元素必须有序~
与上面呼应,Set接口规定,构造函数不能创建包含重复元素的对象。
注意,如果是可变对象(mutable objects)成为了Set中的元素,那么当可变的对象的修改影响到了equals比较的结果,这时Set的行为是不明确的。
Set不允许把自身当作一个元素。
Set的不同实现类会对元素的类型有不同的限制,往其中添加不合格元素or查询不合格元素的存在时,会抛出异常或者报错。
二、方法(和父接口Collection中的基本一致)
1、int size()
2、boolean isEmpty()
3、boolean contains(Object o)
4、Iterator<E> iterator()
Returns an iterator over the elements in this set.
The elements are returned in no particular order (unless this set is an instance of some class that provides a guarantee).
5、Object[] toArray()
返回一个包含Set中所有元素的数组。
如果Set本身制定了元素的顺序(它的迭代器中的元素是有序的),那么这个方法返回元素的顺序也应该一致。
返回的数组是“安全的”,因为没有任何引用变量指向它,它的引用由这个Set保留,这意味着这个方法必须分配一个新的数组,即使这个set集合本身就是数组。而调用者则可以自由修改返回得到的数组。(这里返回的是新分配的数组的引用)
这个函数充当了以数组为基础的API和以集合为基础的API之间的桥梁。
6、<T> T[ ] toArray(T[ ] a)
和上面功能一致,但是细节不一样,要求返回指定类型的数组。
7、boolean add(E e)
如果Set集合中不包含e元素,则添加进集合。(可选操作)
这个函数和Set对构造函数的规定,确保了Set集合中不会包含重复的元素。
但是,Set只是一个接口,具体的实现类可以对元素的类型做不同的限制(如是否允许null值)。
8、boolean remove(Object o)
如果指定元素包含在Set集合中,删除并返回true。(可选操作)
9、boolean containsAll(Collection<?> c)
判断集合c是不是这个集合的子集。
10、boolean addAll(Collection<? extends E> c)
把自己没有而集合c中的有的元素添加进来(a U c)。(可选操作)
本操作进行时,如果集合c发生了改变,结果不可预知。
11、boolean removeAll(Collection<?> c)
A-C(可选操作)
12、boolean retainAll(Collection<?> c)
保留两个集合的交。(可选操作)
13、void clear()
集合清空。(可选操作)
14、boolean equals(Object o)
Compares the specified object with this set for equality. Returns true if the specified object is also a set, the two sets have the same size, and every member of the specified set is contained in this set (or equivalently, every member of this set is contained in the specified set). This definition ensures that the equals method works properly across different implementations of the set interface.
15、int hashCode()
Returns the hash code value for this set. The hash code of a set is defined to be the sum of the hash codes of the elements in the set, where the hash code of a null element is defined to be zero. This ensures that s1.equals(s2) implies that s1.hashCode()==s2.hashCode() for any two sets s1 and s2, as required by the general contract of Object.hashCode().
16、default Spliterator<E> spliterator()
Creates a Spliterator over the elements in this set. The Spliterator reports Spliterator.DISTINCT. Implementations should document the reporting of additional characteristic values.
Collection接口的子接口——Set接口的更多相关文章
- 16、Collection接口及其子接口Set和List(常用类LinkedList,ArrayList,Vector和Stack)
16.Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements).一些Collection允许相同 ...
- C#构造方法(函数) C#方法重载 C#字段和属性 MUI实现上拉加载和下拉刷新 SVN常用功能介绍(二) SVN常用功能介绍(一) ASP.NET常用内置对象之——Server sql server——子查询 C#接口 字符串的本质 AJAX原生JavaScript写法
C#构造方法(函数) 一.概括 1.通常创建一个对象的方法如图: 通过 Student tom = new Student(); 创建tom对象,这种创建实例的形式被称为构造方法. 简述:用来初 ...
- java 数据类型:集合接口Collection之队列Queue:PriorityQueue ;Dequeue接口和ArrayDeque实现类:
什么是Queue集合: Queue用于模拟队列这种数据结构,队列通常是"先进先出"(FIFO)的容器.队列的头部保存在队列中存放时间最长的元素,尾部保存存放时间最短的元素. ...
- Java面向对象之 接口: [修饰符] interface 接口名 {...};子接口:[修饰符] interface 接口名 extends 父接口,父接口2...{...}
1.什么是接口? 类比抽象类,把功能或者特性类似的一类 抽象的更彻底,可以提炼出更加特殊的"抽象类"----接口 2.如何定义接口 语法: [修饰符] interface 接口名 ...
- Java基础 TreeSet()来实现数组的【定制排序】 : Comparable接口(自然排序) 或者 Comparator接口 (定制排序)
笔记: //排序真麻烦!没有C++里的好用又方便!ORZ!ORZ!数组排序还还自己写个TreeSet()和( Comparable接口(自然排序) 或者 Comparator接口 (定制排序))imp ...
- Java基础进阶:多态与接口重点摘要,类和接口,接口特点,接口详解,多态详解,多态中的成员访问特点,多态的好处和弊端,多态的转型,多态存在的问题,附重难点,代码实现源码,课堂笔记,课后扩展及答案
多态与接口重点摘要 接口特点: 接口用interface修饰 interface 接口名{} 类实现接口用implements表示 class 类名 implements接口名{} 接口不能实例化,可 ...
- Java基础-接口中国特色社会主义的体制中有这样的现象:地方省政府要坚持党的领导和按 照国务院的指示进行安全生产。请编写一个java应用程序描述上述的体制现象。 要求如下: (1)该应用程序中有一个“党中央”接口:CentralPartyCommittee,该接口中 有个“坚持党的领导”方法:void partyLeader() (2)该应用程序中有一个“国务院”抽象类:StateCouncil,
36.中国特色社会主义的体制中有这样的现象:地方省政府要坚持党的领导和按 照国务院的指示进行安全生产.请编写一个java应用程序描述上述的体制现象. 要求如下: (1)该应用程序中有一个“党中央”接口 ...
- C#接口的使用场合,接口应用
当一个项目不断的扩大的时候,会面临的问题是不断的有以下情况: 1.以前编写程序的人离职了,新来的程序员看不懂以前的程序,或者觉得以前的程序部够好,但又不希望删除: 2.当实现第三方接口时,如:读写IC ...
- Surface Pro 4 和 Surface Book 使用名为 Surface UEFI(统一可扩展固件接口)的新固件接口
Surface Pro 4 和 Surface Book 使用名为 Surface UEFI(统一可扩展固件接口)的新固件接口.Surface UEFI 提供新功能,如启动更快速.安全性更高.可替换 ...
- Delphi接口的底层实现(接口在内存中仍然有其布局,它依附在对象的内存空间中,有汇编解释)——接口的内存结构图,简单清楚,深刻 good
引言 接口是面向对象程序语言中一个很重要的元素,它被描述为一组服务的集合,对于客户端来说,我们关心的只是提供的服务,而不必关心服务是如何实现的:对于服务端的类来说,如果它想实现某种服务,实现与该服务相 ...
随机推荐
- apache httpd.conf 文件的 详解
文章 摘自 :http://www.php100.com/html/webkaifa/apache/2009/0418/1192.html ServerRoot /usr/local Server ...
- 使用conda进行本地安装
1. 由于安装源被墙转换为本地安装 例如要安装 boost-1.59版本,因为在默认源中没有,我们指定了特定源进行安装 conda install -c menpo dlib=boost-1.59 然 ...
- spring boot 下 mapper接口与xml文件映射问题
1. @MapperScan @MapperScan("com.streamax.ums.business.dao") 注解扫描的包路径是否有问题 2. 目录结构 mapper接口 ...
- 2018-2019-2 20165205 网络对抗技术 Exp9 Web安全基础
2018-2019-2 20165205 网络对抗技术 Exp9 Web安全基础 1.基础问题 SQL注入攻击原理,如何防御 原理: SQL注入指攻击者在提交查询请求时将SQL语句插入到请求内容中,同 ...
- 简易的美图秀秀利用别人的so库
在实际开发中,有时候时间短,任务量大,可以查看类似的apk,将行apk反编译,通过看源码分析,用里面的JNI代码! 本案例中用了美图秀秀的JNI.java和jni.so链接库 项目中调用别人写的c代码 ...
- Android studio2 中的 SDK Manager的使用-------Android SDK 的安装与更新(Install missing platform(s) and sync project 编译错误解决)
最近在编写Android程序,其中有一个问题就是对旧应用的导入,此时往往你的Android SDK中并没有老版本的Android SDK, 此时往往会提示你出现错误 Install missing p ...
- promise 实现红绿灯
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- H3C 模拟器 pc与防火墙,交换机相连,在pc cmd下用telnet访问交换机和防火墙
架构如图 实现目的 1 在pc端,用telnet访问核心交换机10.20.4.252 2 在pc端,用telnet访问二层交换机10.20.4.253 在此之前,pc_4,pc_5与交换机的配置不进行 ...
- .net core cookie滑动过期设置
HttpContext.SignInAsync( CookieAuthenticationDefaults.AuthenticationScheme, userPrincipal, new Authe ...
- 串口使用和CSerial类
1 串口通信的基本原理 串口通信中无论是写入串口还是读取串口,都是对缓冲区操作的.可以理解为写串口就是向输出缓冲区写入内容,读取串口就是从输入串口缓冲区读取内容.但是何时打开串口,何时发送数据,何时接 ...