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
引言 接口是面向对象程序语言中一个很重要的元素,它被描述为一组服务的集合,对于客户端来说,我们关心的只是提供的服务,而不必关心服务是如何实现的:对于服务端的类来说,如果它想实现某种服务,实现与该服务相 ...
随机推荐
- Inter IPP & Opencv + codeblocks 在centos 环境下的配置
一.先安装codeblocks wget http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-12.noar ...
- ajax+php (jquery.form插件)实现异步文件上传
<!DOCTYPE html> <html lang="CN"> <head> <title>upload model</ti ...
- VS Code 调试 Golang 出现 Failed to continue: Check the debug console for details
VS Code断点调试Golang时候,弹出提示:Failed to continue: Check the debug console for details 点击Open launch.json, ...
- flutter 延时函数delay Loading页面
loading 页面 import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; class Lo ...
- FTP\SFTP连接命令
五.ftp连接 输入:ftp 10.18.49.19 2121六.输入账号密码 zhangsan/sdjg34t#七.输入:ls 查看文件是否上传 如上传 输入:bye ...
- html 网页源码解析:bs4中BeautifulSoup
from bs4 import BeautifulSoup result=requests.request("get","http://www.baidu.com&quo ...
- 六十一:Flask.Session之flask操作session
1.设置session:使用flask.session就可以操作字典,操作方式和操作字典一样:session['key']=value2.获取session,和获取字典的值一样:session['ke ...
- 内存或磁盘空间不足,word无法显示所请求的字体
从百度哪里获得了解决方法,应该是字体没有添加到C盘的fonts目录下面,记录一下解决办法. 在电脑上打开Windows PowerShell ,以管理员身份运行.(可能有的同志不知道怎么以管理员的方式 ...
- Spring Data JPA 介绍
Spring-data-jpa的基本介绍:JPA诞生的缘由是为了整合第三方ORM框架,建立一种标准的方式,百度百科说是JDK为了实现ORM的天下归一,目前也是在按照这个方向发展,但是还没能完全实现.在 ...
- 自动添加 ssh key 到远程主机的脚本,应用sshpass和ssh-copy-id
USERNAME=$ PASSWORD=$ HOST=$ if [ "$3" = "" ]; then echo "Missing parameter ...