`
zhangwei_david
  • 浏览: 477026 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

HashSet的实现

    博客分类:
  • Java
 
阅读更多

      HashSet在开发过程中是很长用的,我们很多时候都会借住其不能存储重复内容进行去重;可是很多时候,我们都忽略了其实现原理。如果没有HashSet我们应该使用什么去实现同样的功能呢?

    我们看看源码,可以发现原来HashSet就是对HashMap的封装。

public class HashSet<E>
    extends AbstractSet<E>
    implements Set<E>, Cloneable, java.io.Serializable
{
    static final long serialVersionUID = -5024744406713321676L;

    private transient HashMap<E,Object> map;

    // 固定的一个值
    private static final Object PRESENT = new Object();

    /**
     * 创建一个空的HashSet,存储对象HashMap,默认容量是16,加载因子时0.75.
     */
    public HashSet() {
        map = new HashMap<>();
    }

 

2
3
分享到:
评论

相关推荐

    HashSet的实现原理

    在Java编程中,HashSet是一种不允许存储重复元素的集合,它实现了Set接口。HashSet是通过HashMap来实现的,其底层使用HashMap来保存所有元素。这种实现方式让HashSet的操作非常简单高效,因为HashSet的大部分操作,...

    Java面试题 从源码角度分析HashSet实现原理

    HashSet实现原理分析 HashSet是Java集合框架中的一种Set实现,HashSet实现了Set接口,提供了无序、不可重复的集合操作。通过源码分析, HashSet的实现原理可以分为以下几个方面: 1. HashSet的构造函数:HashSet的...

    随机数用hashSet排序

    随机数,HsahSet,排序,输出.随机数,HsahSet,排序,输出.

    native-hashset:Node.js和io.js的本地HashSet实现

    本地哈希 提供Node的本机哈希集实现。 基于但使用编写,以为多个Node系统(以及第一个io.js系统)... native-hashset使用实现HashSet,以允许使用超大型集。 自然,由于C ++的本质,因此严格键入此集合。兼容性如果您使

    c++用vector实现HashSet

    虽然C++标准库中没有直接提供HashSet类,但我们可以利用其他容器,如`std::unordered_set`来实现类似的功能。不过,在这个场景中,我们将探讨如何使用`std::vector`来模拟HashSet的行为。 `std::vector`是C++标准库...

    hashset类的使用

    在Java语言中,HashSet类是集合框架的重要组成部分,属于Set接口的一个实现。它基于哈希表的原理来存储不重复的元素,其核心在于利用哈希算法快速定位元素存储位置,从而提高数据存取的效率。本篇将详细介绍Java语言...

    Java基础学习25.pdf

    3. **HashSet实现**:HashSet是Set接口的实现之一,底层实现是HashMap。HashSet的元素作为HashMap的键存在,而HashMap的值则统一使用一个固定的对象PRESENT。由于HashMap不允许键重复,所以HashSet也不允许重复元素...

    Set实现类1

    - **主要方法**:HashSet实现了Set接口的所有方法,如`add()`、`remove()`、`contains()`等。由于基于HashMap,它的插入、删除和查找操作的时间复杂度通常是O(1),但若涉及到重新哈希,则会变为O(logN)。 2. **...

    单选和多选

    下面我们将深入探讨如何使用HashMap实现单选功能以及如何用HashSet实现多选功能。 首先,我们来看HashMap如何实现单选功能。HashMap是Java中的一个关联容器,它以键值对的形式存储数据,其中键(Key)是唯一的。在...

    源码解析jdk7.0集合:HashSet的底层实现原理.pdf

    HashSet作为Java集合框架中一个重要的非同步集合实现,它在JDK 7.0中的底层实现原理是基于HashMap来存储和操作数据的。下面就详细介绍HashSet的实现原理。 首先,HashSet是Set接口的一个实现类,它用于存储唯一性的...

    HashSet去重

    - **`HashSet`与`ArraySet`/`LinkedSet`**:`HashSet`是基于哈希表实现的,而`ArraySet`通常是指数组实现的集合,`LinkedSet`则是基于链表实现的有序集合。`HashSet`提供了非常高效的增删查操作,但不保证元素的插入...

    HashSet和HashMap的区别_动力节点Java学院整理

    HashSet实现了Set接口,它不允许集合中有重复的值,当我们提到HashSet时,第一件事情就是在将对象存储在HashSet之前,要先确保对象重写equals()和hashCode()方法,这样才能比较对象的值是否相等,以确保set中没有...

    Java基础实用知识库分享

    可以使用HashSet实现快速查找和删除元素。 (8)HashMap的遍历 HashMap是Java编程语言中的一种映射类型,用于存储键值对。可以使用HashMap实现快速查找和遍历元素。 (9)递归列出目录下所有文件与删除目录下所有...

    CustomSet.zip

    在给定的“CustomSet.zip”压缩包中,我们看到一个名为“CustomSet.java”的文件,这很可能是用户自定义的一个简易版本的HashSet实现。这个自定义版本通常是为了学习和理解HashSet的底层工作原理而创建的,或者是...

    HashSet详解和使用示例_动力节点Java学院整理

    HashSet是Java编程语言中的一种集合类,它是一个不包含重复元素的集合,其内部实现基于HashMap。HashSet不保证元素的顺序,允许存储null元素,并且是非同步的,这意味着在多线程环境下,如果需要保证线程安全,需要...

    HashSet类的用法.pdf

    `HashSet`是Java集合框架的一部分,它实现了`Set`接口。`HashSet`不允许重复的元素,并且不保证元素的顺序。此外,`HashSet`是非同步的,这意味着多线程环境下的安全问题需要通过外部同步机制解决。 #### 二、特点 ...

    HashSet工作原理_动力节点Java学院整理

    对于 HashSet 而言,它是基于 HashMap 实现的,HashSet 底层采用 HashMap 来保存所有元素,因此 HashSet 的实现比较简单,查看 HashSet 的源代码,可以看到如下代码:

    Java中HashSet和HashMap的区别_动力节点Java学院整理

    HashSet实现了Set接口,它不允许集合中有重复的值。当我们提到HashSet时,第一件事情就是在将对象存储在HashSet之前,要先确保对象重写equals()和hashCode()方法,这样才能比较对象的值是否相等,以确保set中没有...

    java集合类学习与实例

    - **HashSet**:HashSet实现了Set接口,基于哈希表(HashMap)实现,提供了快速的查找和添加元素。由于无序性,它无法保持元素的插入顺序。 - **TreeSet**:TreeSet实现了SortedSet接口,它基于红黑树,保证元素...

Global site tag (gtag.js) - Google Analytics