博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Set
阅读量:6847 次
发布时间:2019-06-26

本文共 935 字,大约阅读时间需要 3 分钟。

hot3.png

JDK1.7

Set接口的实现类 HashSet, LinkedHashSet, TreeSet

 

 

1hashSet

HashSet类的特点:能够快速定位集合中的元素、集合中的元素无序(这里所谓的无序并不是完全无序,只是不像List集合按对象的插入顺序保存对象)。

 

由HashSet类实现的Set集合中的对象必须是惟一的,因此需要添加到HashSet集合中的对象,需要重新实现equals()方法,从而保证插入集合中对象的标识的惟一性。

 

由HashSet类实现的Set集合的排列方式为按照哈希码排序,根据对象的哈希码确定对象的存储位置,因此需要添加到由HashSet类实现的Set集合中的对象,还需要重新实现hashCode()方法,从而保证插入集合中的对象能够合理地分布在集合中,以便于快速定位集合中的对象。

 

2LinkedHashSet

 

LinkedHashSet是HashSet的子类,该类的方法全部是父类的方法

父类HashSet再利用内部集成的LinkedHashMap来实现按元素的最后访问次序来迭代遍历

 

对LinkedHashSet的支持

HashSet有一个默认访问权限的构造方法,其中创建了LinkedHashMap用来存储对象

这个构造方法只有LinkedHashSet会调用

 

 3TreeSet

TreeSet 是一个有序的集合,它的作用是提供有序的Set集合。它继承于AbstractSet抽象类,实现了NavigableSet<E>, Cloneable, java.io.Serializable接口。

TreeSet 继承于AbstractSet,所以它是一个Set集合,具有Set的属性和方法。

TreeSet 实现了NavigableSet接口,意味着它支持一系列的导航方法。比如查找与指定目标最匹配项。

TreeSet 实现了Cloneable接口,意味着它能被克隆。

TreeSet 实现了java.io.Serializable接口,意味着它支持序列化。

TreeSet是基于TreeMap实现的。

TreeSet是非线程安全的。

转载于:https://my.oschina.net/demons99/blog/1927235

你可能感兴趣的文章
css的bug:
查看>>
《Redis设计与实现》读书笔记
查看>>
waiting for changelog lock.
查看>>
小白学爬虫-批量部署Splash负载集群
查看>>
你离BAT之间,只差这一套Java面试题
查看>>
laravel package 推荐,数据备份
查看>>
Maven配置仓库路径和下载路径
查看>>
Synchronized锁在Spring事务管理下,为啥还线程不安全?
查看>>
学hadoop需要什么基础
查看>>
环境变量PATH cp命令 mv命令 文档查看cat/more/less/head/tail
查看>>
阿里云亮相2019联通合作伙伴大会,边缘计算等3款云产品助力5G时代产业数字化转型...
查看>>
dubbo源码分析-服务端发布流程-笔记
查看>>
阿里云发布Apsara SA系列混合云存储阵列
查看>>
GoJS教程:链接模版
查看>>
QListWidget方式显示缩略图
查看>>
金三银四:蚂蚁金服JAVA后端面试题及答案之二面
查看>>
外观模式
查看>>
Ubuntu 外网不通解决方案
查看>>
最长公共子序列
查看>>
OSChina 周六乱弹 —— 历史总是惊人的相似
查看>>