一、Set 概述

  java.util.Set 接口继承 collection 接口,它与 Collection 接口中的方法基本一致,并没有对 Collection 接口进行功能上的扩充,只是比 Collection 接口更加严格了。

  Set 接口中会以某种规则保证存入的元素不出现重复

  Set 集合不是同步的,多线程的。

  特点查询速度快,不重复,没有索引。

二、常用方法

  常用方法参考 Collection 的方法:常用方法

三、实现类

  HashSet 集合

  LinkedHashSet 集合

  TreeSet 集合

  1、Set 集合是有序的吗?

    ① 如果按照元素的存储顺序来说,有一些是可以保证的,有一些是不能保证的。唯有 LinkedHashSet可以保证元素添加的顺序

    ② 如果按照元素的大小顺序来说,有一些是可以保证的,有一些是不能保证的。唯有 TreeSet可以保证元素的大小顺序

    ③ HashSet:既不能保证添加顺序,也不能保证大小顺序。是完全无序的。

  2、HashSet 与 LinkedHashSet 区别?

    HashSet:完全无序。

    LinkedHashSet:是按照添加顺序来存储的。LinkedHashSet 是 HashSet 的子类,比 HashSet 多维护了添加的顺序。

    当既想要实现集合的元素的不可重复性,又想要保证元素的添加顺序,就选择使用LinkedHashSet(效率低),否则就用List系列或HashSet。

  3、HashSet 与 TreeSet 的区别?

    HashSet:完全无序。

    TreeSet:是按照存储元素的大小来排序,当你需要元素不可重复,又要给元素排大小时,就用TreeSet。

    注意:要用到TreeSet,存储的元素对象一定要实现 要用到TreeSet,一定要用java.lang.Comparable或java.util.Comparator

  3、如何保证元素不可重复的呢?(如何判断两个元素是重复的呢)

    (1)HashSet 和 LinkedHashset 集合:

        ① 先比较元素的 hash 值,如果 hash 值不一样,说明两个元素一定不相同。

        ② 如果 hash 值一样,再调用 equals 方法比较

    (2)TreeSet 集合:

       按照存储元素的大小来决定元素是否相同,如果两个元素大小“相等”就是相同的元素。即必须实现 java.lang.Comparable或java.util.Comparator。

Java 之 Set 接口的更多相关文章

  1. 【转】java通用URL接口地址调用方式GET和POST方式

    java通用URL接口地址调用方式GET和POST方式,包括建立请求和设置请求头部信息等等......... import java.io.ByteArrayOutputStream; import ...

  2. Java继承和接口

    接口最关键的作用,也是使用接口最重要的一个原因:能上溯造型至多个基础类.使用接口的第二个原因与使用抽象基础类的原因是一样的:防止客户程序员制作这个类的一个对象,以及规定它仅仅是一个接口.这样便带来了一 ...

  3. java中set接口的用法

    java中的set接口有如下的特点: 不允许出现重复元素: 集合中的元素位置无顺序: 有且只有一个值为null的元素. 因为java中的set接口模仿了数学上的set抽象,所以,对应的数学上set的特 ...

  4. Java调用webservice接口方法

                             java调用webservice接口   webservice的 发布一般都是使用WSDL(web service descriptive langu ...

  5. Java面向对象:接口

    Java面向对象之接口 什么是接口:接口是一种规范和标准,他们可以约束类的行为,是一些方法特征的集合 语法: [修饰符] interface 接口名 extends 父接口1,夫接口2....... ...

  6. JAVA ,Map接口 ,迭代器Iterator

    1.    Map 接口概述 java.util.Map 接口描述了映射结构, Map 接口允许以键集.值集合或键 - 值映射关系集的形式查看某个映射的内容. Java 自带了各种 Map 类. 这些 ...

  7. java抽象类和接口区别

    深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的 ...

  8. java抽象类与接口的区别及用法

    java抽象类与接口的区别及用法 一.抽象类里面的方法可以有实现,但是接口里面的方法确是只能声明. 二.接口是设计的结果 :抽象类是重构的结果 . 三.java不支持多重继承,所以继承抽象类只能继承一 ...

  9. 如何让Java和C++接口互相调用:JNI使用指南

    如何让Java和C++接口互相调用:JNI使用指南 转自:http://cn.cocos2d-x.org/article/index?type=cocos2d-x&url=/doc/cocos ...

  10. Java中的队列:java.util.Queue接口

    队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作. Queue接口与List.Set同一级别,都是继承了Collection接口.Linked ...

随机推荐

  1. Android 开发基础入门篇: 复制一个工程作为一个新的工程

    说明 咱们做项目很多时候都需要复制一份工程出来作为一个新的工程 把第一节的工程拷贝到这一节 修改工程名字 打开软件导入此工程 修改包名 第一节的时候说了,一个APP一个包名 自行添加修改 自行修改 自 ...

  2. 8-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(Apache 配置SSL,HTTPS连接)

    https://www.cnblogs.com/yangfengwu/p/10947423.html 和当时配置MQTT差不多,去下载证书文件   https://www.cnblogs.com/ya ...

  3. 基环树DP

    基环树DP Page1:问题 啥是基环树?就是在一棵树上增加一条边. Page2:基环树的几种情况 无向 有向:基环外向树,基环内向树. Page3:处理问题的基本方式 1.断环成树 2.分别处理树和 ...

  4. tensorflow学习笔记(三):实现自编码器

    黄文坚的tensorflow实战一书中的第四章,讲述了tensorflow实现多层感知机.Hiton早年提出过自编码器的非监督学习算法,书中的代码给出了一个隐藏层的神经网络,本人扩展到了多层,改进了代 ...

  5. [300iq Contest 1-D]Dates

    传送门 Description 每个妹子匹配一个时间区间,每个时间最多选择\(a_i\)个妹子,每个妹子有一个快乐值,最大化总快乐值 Solution 贪心,从大往小取,能取则取 判断是否可以有完美匹 ...

  6. 运维-安装rabbitmq 集群

    服务器:   online-platform-rabbitmq-01 online-platform-rabbitmq-02 online-platform-rabbitmq-03 绑定HOSTS: ...

  7. Spring Security教程之退出登录logout(十)

    要实现退出登录的功能我们需要在http元素下定义logout元素,这样Spring Security将自动为我们添加用于处理退出登录的过滤器LogoutFilter到FilterChain.当我们指定 ...

  8. Gamma阶段第六次scrum meeting

    每日任务内容 队员 昨日完成任务 明日要完成的任务 张圆宁 #91 用户体验与优化https://github.com/rRetr0Git/rateMyCourse/issues/91(持续完成) # ...

  9. 免费https证书

    https://certbot.eff.org/lets-encrypt/ubuntuother-nginx https://ruby-china.org/topics/31942 https://l ...

  10. React-native升级方法

    React-native升级方法: 官网升级说明 中文版官网说明 各个版本差异对比