栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

HashSet 粗略介绍

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

HashSet 粗略介绍

HashSet
  • 1.底层还是HashMap实现
  • 2.没有索引,无序(添加和取出的顺序不一致),存储方式是根据hash值所在的下标存储的
  • 3.不允许重复元素,所以最多包含一个null
  • 4.遍历方法有增强for 和 迭代器
方法概览

add(Object o)和addAll(Collection c)增加元素
contains(Object o)和containsAll(Collection c)判断元素是否存在
isEmpty()判断集合是否为空
remove(Object o)和removeAll(Collection c)删除元素
size()返回集合的大小
clear()清空集合
iterator()迭代器
toArray()将内容转到数组中

HashSet实现原理

1.HashSet底层是HashMap
2.添加一个元素时,先得到hash值 ,转化成为索引值
3.找到存储数据表table,看到索引值位置是否已经存放的有元素
4.如果没有直接加入
5.如果有,调用equal比较,如果相同就放弃添加,如果不相同,则添加到当前索引链表的后面
6.如果一个索引下的链表长度大于8,就会进行树化(红黑树)

常见坑点
  1. 加入两个new dog(“阿圣”);结果是两个不同对阿圣对象
  2. 加入两个 new String(“阿圣”);结果是一个阿圣对象
  3. 原因是底层采用equal比较判断是否已经存在相同的元素(可以重载)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/602727.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号