常用集合※【HashSet】
来源:互联网 发布:正装ps软件 编辑:程序博客网 时间:2024/06/16 20:04
HashSet类实现Set接口,由哈希表支持,但是HashSet是基于HashMap实现的,它的底层封装
了一个HashMap,来保存数据。
HashSet结构
public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, Serializable
HashSet继承了AbstractSet类,并实现了Set接口。即:AbstractSet提供 Set接口的骨干实现,从而最大限度地减少了实现此接口所需的工作。Set接口是一种不包括重复元素的Collection,它维持它自己的内部排序,所以随机访问没有任何意义。
HashSet实现了Coneable接口,即:具有克隆功能。
HashSet实现了Serializable接口,即:这意味着HashSet支持序列化,能通过序列化去传输。
私有属性
基于Hashmap实现,底层采用hashMap保存 private transient HashMap<E,Object> map;定义一个object对象,用来当做hashMap的value值。private static finalObject PRESENT = new Object();
HashSet构造函数
public HashSet() {map = new HashMap<E,Object>(); } public HashSet(Collection<? extends E> c) {map = new HashMap<E,Object>(Math.max((int) (c.size()/.75f) + 1, 16));addAll(c); } public HashSet(int initialCapacity, float loadFactor) {map = new HashMap<E,Object>(initialCapacity, loadFactor); } public HashSet(int initialCapacity) {map = new HashMap<E,Object>(initialCapacity); }
总结
- 不能保证元素的排列顺序。
- HashSet不是同步的,多线程访问同一步HashSet对象时,需要手工同步。
- 集合元素值可以是null。
- HashSet不能重复存储equals相同的数据 。原因就是equals相同,数据的散列码也就相同(hashCode必须和equals兼容)
1 0
- 常用集合※【HashSet】
- java1.8 常用集合源码学习:HashSet
- HashSet集合
- HashSet集合
- HashSet集合
- HashSet集合
- 集合 --- HashSet
- HashSet集合
- HashSet集合
- HashSet集合
- 集合-HashSet
- 常用集合ArrayList,LinkedList,HashMap,HashSet源码分析
- 常用集合ArrayList,LinkedList,HashMap,HashSet源码分析
- 集合框架 HashSet集合
- 集合框架--HashSet集合
- JAVA学习第三十六课(常用对象API)— Set集合:HashSet集合演示
- 17-集合框架-19-常用对象API(集合框架-HashSet存储自定义对象)
- Java集合框架总结01之常用单列集合(ArrayList, HashSet)
- [JSOI2007]建筑抢修
- Grails- mysql配置,以及shiro插件安装
- 011-减法指令SUB及对标志寄存器PSW的影响
- 网络知识---端口号、协议号
- C语言指针的长度和类型
- 常用集合※【HashSet】
- 阿萨德
- 一步一步了解Cocos2dx 3.0 正式版本开发环境搭建(Win32/Android)
- 【数据库Mysql】——存储引擎
- redis持久化RDB和AOF
- linux虚拟机3种网络模式
- Java如何找出数组中前k个高频元素
- LeetCode[126.Word Ladder II]题解 难度[hard]
- Java 数组转换成List,然后执行add或remove抛异常UnsupportedOperationException问题的解决