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. Mybatis 实体类使用@Accessors(chain = true)注解时,对应的mapper xml 报错

    去掉这个注解就行了 应该是 mybatis 会调用实体类的 getter  setter 方法, 返回值可能会有所影响

  2. hive 使用笔记(table format;lateral view横表转纵表)

    1. create table 创建一张目标表,指定分隔符和存储格式: create table tmp_2 (resource_id bigint ,v int) ROW FORMAT DELIMI ...

  3. TensorFlow 学习(1)——第一个程序:线性回归

    目前这个程序还有很多地方没有搞懂,先跑一跑例程看看效果如何.从结果来看,最终的训练成果能够接近于预设的数据

  4. OpenCV学习笔记(13)——轮廓特征

    查找轮廓的不同特征,例如面积,周长,重心,边界等 1.矩 图像的矩可以帮助我们计算图像的质心,面积等. 函数cv2.momen()会将计算得到的矩以一个字典的形式返回, 我们的测试图像如下: 例程如下 ...

  5. 按下home键,重新打开,应用重启

    其实不是重启,只是重新打开了luncher的那个activity.只要通过判断把它finish,就会显示按下home键前的页面. 解决方法: 在重启的页面中加入一下代码,注意加在setContentV ...

  6. mybatis-config.xml 和 mapper基本设置

    mybatis-config.xml : <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE ...

  7. json字符串转map、json数组演示

    公司项目用的IBM封装的json解析,此处采用阿里的fastjson进行演示,代码如下: package com.alphajuns.test; import com.alibaba.fastjson ...

  8. JavaScript数值千分位格式化的方法和性能

    瞎掰的前提 前端嘛,经常处理数值和时间. 所以数值和时间的格式化少不了. 最近一直在面试前端, 就出了一个如何给数值添加千分位的面试题. 至于答案,我一直都有一种标准, 一是基于你现有的知识可以实现, ...

  9. 【css】纯css实现文字循环滚动效果

    不用js来实现. html: <div class="box"> <p class="animate"> 文字滚动的内容文字滚动的内容文 ...

  10. Qt输出中文乱码的问题

    /* 我遇到的情况: 文件编码为UTF-8.程序输输出中文位乱码. 解决方案: 1. 工具->选项->环境->语言: Chinese 2. 选项->文本编辑器->行为-& ...