概述
目录
Set集合
HashSet集合:
LinkedHashSet集合:
TreeSet集合:
哈希表:
哈希表存储原理:
Set集合
Set集合继承Collection接口,也是单列集合的重要分支
特点:
1. 元素没有索引,元素唯一(不可重复)
注意:
1. Set集合元素没有索引,只能使用迭代器或者增强for循环进行遍历元素
2. Set集合没有特殊的方法.都是使用Collection的方法
3. Set接口就是集合,但凡实现Set接口的类都叫做Set集合
常用的实现类:
1. HashSet类 : 元素没有索引,元素唯一,存储顺序不一致
2. LinkedHashSet类 : 元素没有索引,元素唯一,存储顺序一致
3. TreeSet类 : 元素没有索引,元素唯一,可以对元素进行排序
HashSet集合:
HashSet集合需要存储自定义类型的元素,保证元素唯一,必须重写equals和hashCode方法
LinkedHashSet集合:
底层采用链表+哈希表
如果集合中存储的是自定义类型的元素,那么就要求该元素所属的类重写equals和hashCode方法
TreeSet集合:
底层依赖于TreeMap,基于红黑树的实现
排序:
1.默认规则排序: 创建TreeSet集合对象,该集合对象使用默认规则对元素排序
1.1 默认规则是在集合元素所属的类中指定
1.2 要求集合元素所属的类必须实现Comparable接口,重写comparTo方法并在该方法中指定排序
2. 指定排序规则: public TreeSet(Comparator<? super E> compartor);
2.1 TreeSet<数据类型> 集合名 = new TreeSet<>(new Comparator<数据类型>()){ //重写 (前 - 后)降序; (后 - 前)升序 }
2.2 创建TreeSet集合对象,该对象使用指定规则对元素进行排序
哈希表:
重写equals和hashCode方法
jdk1.8之前: 数组+链表
jdk1.8之后: 数组+链表 + 红黑树
哈希表存储原理:
1.存储元素的时候,会调用该元素的hashCode方法计算哈希值
2.判断该哈希值对应的位置上是否有元素:
3.如果没有元素,就直接存储该元素
4.如果有元素,就产生了哈希冲突
5.产生了哈希冲突,就得调用该元素的equals方法,与该位置上的所有元素进行一一比较:
比较完后,如果没有一个元素与该元素相等,就直接存储;
比较完后,如果有任意一个元素与该元素相等,就不存储;
注: 哈希表保证元素唯一,链表保证元素存储有序
最后
以上就是雪白香水为你收集整理的哈希表存储原理&Set集合Set集合哈希表:哈希表存储原理: 的全部内容,希望文章能够帮你解决哈希表存储原理&Set集合Set集合哈希表:哈希表存储原理: 所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复