我是靠谱客的博主 雪白香水,最近开发中收集的这篇文章主要介绍哈希表存储原理&Set集合Set集合哈希表:哈希表存储原理: ,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

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集合哈希表:哈希表存储原理: 所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部