一、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。

最新文章

  1. POJ3469 Dual Core CPU(最小割)
  2. C# DateTime类型和时间戳 互相转换
  3. 数据库 SQL :有关 NULL 值引发 TRUE、FALSE、UNKNOW 三值逻辑
  4. pc telnet 登录 android 系统
  5. WCF SOAP
  6. 织梦DEDECMS 首页列表页内容也时间日期调用标签
  7. cocos2dx - v2.3.3编辑器简单使用及不同分辨率适配
  8. 四、正则表达式re模块
  9. 云计算基础 (redhat7介绍及相关配置)
  10. C#设计模式之二十二备忘录模式(Memento Pattern)【行为型】
  11. Java使用volatile实现多线程输出ABC共10次
  12. ADO.NET工具类(一)
  13. SQL Server中锁与事务隔离级别
  14. POJ-1456 Supermarket 销售商品【贪心】+【并查集】
  15. Excel vba map/dictionary
  16. 微信 weui 初体验
  17. c# 加载图片 正在被占用问题
  18. android adb devices 后出现offline问题的解决
  19. Selenium快速入门(下)
  20. luogu P4137 mex

热门文章

  1. chromedriver对应chrome版本
  2. 第二阶段冲刺(个人)——four
  3. 配置Maven环境变量-Eclipse/Idea添加Maven
  4. cf1179D
  5. Python语言基础考察点:python语言基础常见考题(一)
  6. Python、Spyder的环境搭建
  7. 认识随机函数rand()和srand(unsigned int )
  8. C语言-memset()
  9. python虚拟环境切换无效问题
  10. idea从github导入maven项目