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接口的更多相关文章

  1. 16、Collection接口及其子接口Set和List(常用类LinkedList,ArrayList,Vector和Stack)

    16.Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements).一些Collection允许相同 ...

  2. C#构造方法(函数) C#方法重载 C#字段和属性 MUI实现上拉加载和下拉刷新 SVN常用功能介绍(二) SVN常用功能介绍(一) ASP.NET常用内置对象之——Server sql server——子查询 C#接口 字符串的本质 AJAX原生JavaScript写法

    C#构造方法(函数)   一.概括 1.通常创建一个对象的方法如图: 通过  Student tom = new Student(); 创建tom对象,这种创建实例的形式被称为构造方法. 简述:用来初 ...

  3. java 数据类型:集合接口Collection之队列Queue:PriorityQueue ;Dequeue接口和ArrayDeque实现类:

    什么是Queue集合: Queue用于模拟队列这种数据结构,队列通常是"先进先出"(FIFO)的容器.队列的头部保存在队列中存放时间最长的元素,尾部保存存放时间最短的元素.    ...

  4. Java面向对象之 接口: [修饰符] interface 接口名 {...};子接口:[修饰符] interface 接口名 extends 父接口,父接口2...{...}

    1.什么是接口? 类比抽象类,把功能或者特性类似的一类 抽象的更彻底,可以提炼出更加特殊的"抽象类"----接口 2.如何定义接口 语法:  [修饰符] interface 接口名 ...

  5. Java基础 TreeSet()来实现数组的【定制排序】 : Comparable接口(自然排序) 或者 Comparator接口 (定制排序)

    笔记: //排序真麻烦!没有C++里的好用又方便!ORZ!ORZ!数组排序还还自己写个TreeSet()和( Comparable接口(自然排序) 或者 Comparator接口 (定制排序))imp ...

  6. Java基础进阶:多态与接口重点摘要,类和接口,接口特点,接口详解,多态详解,多态中的成员访问特点,多态的好处和弊端,多态的转型,多态存在的问题,附重难点,代码实现源码,课堂笔记,课后扩展及答案

    多态与接口重点摘要 接口特点: 接口用interface修饰 interface 接口名{} 类实现接口用implements表示 class 类名 implements接口名{} 接口不能实例化,可 ...

  7. Java基础-接口中国特色社会主义的体制中有这样的现象:地方省政府要坚持党的领导和按 照国务院的指示进行安全生产。请编写一个java应用程序描述上述的体制现象。 要求如下: (1)该应用程序中有一个“党中央”接口:CentralPartyCommittee,该接口中 有个“坚持党的领导”方法:void partyLeader() (2)该应用程序中有一个“国务院”抽象类:StateCouncil,

    36.中国特色社会主义的体制中有这样的现象:地方省政府要坚持党的领导和按 照国务院的指示进行安全生产.请编写一个java应用程序描述上述的体制现象. 要求如下: (1)该应用程序中有一个“党中央”接口 ...

  8. C#接口的使用场合,接口应用

    当一个项目不断的扩大的时候,会面临的问题是不断的有以下情况: 1.以前编写程序的人离职了,新来的程序员看不懂以前的程序,或者觉得以前的程序部够好,但又不希望删除: 2.当实现第三方接口时,如:读写IC ...

  9. Surface Pro 4 和 Surface Book 使用名为 Surface UEFI(统一可扩展固件接口)的新固件接口

    Surface Pro 4 和 Surface Book 使用名为 Surface UEFI(统一可扩展固件接口)的新固件接口.Surface UEFI 提供新功能,如启动更快速.安全性更高.可替换 ...

  10. Delphi接口的底层实现(接口在内存中仍然有其布局,它依附在对象的内存空间中,有汇编解释)——接口的内存结构图,简单清楚,深刻 good

    引言 接口是面向对象程序语言中一个很重要的元素,它被描述为一组服务的集合,对于客户端来说,我们关心的只是提供的服务,而不必关心服务是如何实现的:对于服务端的类来说,如果它想实现某种服务,实现与该服务相 ...

随机推荐

  1. 关于我&留言板

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

  2. 面试准备一个访问一个URL的过程简版

    客户端获取URL - > DNS解析 - > TCP连接 - >发送HTTP请求 - >服务器处理请求 - >返回报文 - >浏览器解析渲染页面 - > TC ...

  3. C++入门经典-例7.5-对象的指针,函数指针调用类成员

    1:指向相应对象的指针就是对象的指针,它的生明方法与其他类型一样,如下: 类名 *p; 类的指针可以调用它所指向对象的成员.形式如下: p->类成员; 2:代码如下: (1)cat.h #inc ...

  4. (八)C语言之printf

  5. C++之多继承与虚继承

    1. 多继承 1.1 多继承概念 一个类有多个直接基类的继承关系称为多继承 多继承声明语法 class 派生类名 : 访问控制 基类名1, 访问控制 基类名2, ... { 数据成员和成员函数声明 } ...

  6. tp5 多条件查询

    $where['rc_category_id'] = array('eq',$cid); $where['rc_territory_ids'] = ['like', '%'.$tid.'%']; $l ...

  7. 高效C++无锁队列实现-moodycamel::ConcurrentQueue

    国外一牛人做的,支持多平台,支持多线程写.多线程读,并可指定读写token,转载过来. 感觉作者也时刻维护着他这个项目,我提了一些问题,每次都会及时得到答复,而且回复得非常认真仔细,非常赞! 链接地址 ...

  8. 移动App双周版本迭代策略

    对于移动互联网产品来说,迭代的速度就是生命.我创业时做移动App时是一周一版,而现在是2周1版.相比起小公司,大公司迭代时间虽长,却更为不易,因为大公司流程更多,参与人数更多,需求更多,实现这样的快速 ...

  9. Java快排

    package quickSort; /** * 快速排序 * @author root * */ public class QuickSort { static int[] data = {0,2, ...

  10. Eureka 2.0 闭源--选择Consul???[转]

    原文链接: https://www.cnblogs.com/williamjie/p/9369800.html 在上个月我们知道 Eureka 2.0 闭源了,但其实对国内的用户影响甚小,一方面国内大 ...