`
uule
  • 浏览: 6359041 次
  • 性别: Icon_minigender_1
  • 来自: 一片神奇的土地
社区版块
存档分类
最新评论

HashSet

 
阅读更多

 

Set 是不包含重复元素的集合。可以更加正式地表达为,在 set 里面的元素 e1,e2, 不允许 e1.equals(e2), 而且最多有一个 null 元素。

Set 的主要方法如下,可以看出 List 和 Set 在方法上的区别了, List 能够根据类似于 index ,来找到元素的方法,而 set 只管往集合里面放东西,并不管其插入的顺序, List 有比较严格的插入顺序。

 

HashSet 的基本数据结构是 HashMap  HashMap 的基本数据结构是哈希表和链表,在构造函数上可以参见HashMap 的工作原理,和 HashMap 一样,影响性能的因素包括: set 的初始化容量大小,容量因子,和HashCode 的构造.

 

Set不包含重复元素,而HashMap的Key也不可重复,故其可使用HashMap实现。

 

成员变量:

 

    private transient HashMap<E,Object> map;

    // Dummy value to associate with an Object in the backing Map
    private static final Object PRESENT = new Object();

 构造函数:

 

public HashSet() {
	map = new HashMap<E,Object>();
    }

    /**
     * Constructs a new, empty set; the backing <tt>HashMap</tt> instance has
     * the specified initial capacity and the specified load factor.
     *
     * @param      initialCapacity   the initial capacity of the hash map
     * @param      loadFactor        the load factor of the hash map
     * @throws     IllegalArgumentException if the initial capacity is less
     *             than zero, or if the load factor is nonpositive
     */
    public HashSet(int initialCapacity, float loadFactor) {
	map = new HashMap<E,Object>(initialCapacity, loadFactor);
    }

    public HashSet(int initialCapacity) {
	map = new HashMap<E,Object>(initialCapacity);
    }
 

主要方法:

 

public boolean add(E e) {
	return map.put(e, PRESENT)==null;
    }

public boolean remove(Object o) {
	return map.remove(o)==PRESENT;
    }

public void clear() {
	map.clear();
    }

public boolean contains(Object o) {
	return map.containsKey(o);
    }

/**
     * Returns an iterator over the elements in this set.  The elements
     * are returned in no particular order.
     *
     * @return an Iterator over the elements in this set
     * @see ConcurrentModificationException
     */
    public Iterator<E> iterator() {
	return map.keySet().iterator();
    }

    
 

更详细可参考:http://zhangshixi.iteye.com/blog/673143

 

 

 

 

 

分享到:
评论

相关推荐

    HashSet的实现原理

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

    HashMap与HashTable和HashSet的区别

    ### HashMap与HashTable和HashSet的区别 #### 一、概述 在Java集合框架中,`HashMap`, `HashTable` 和 `HashSet` 是三个重要的数据结构,它们分别实现了`Map`接口和`Set`接口,提供了不同的功能来满足不同的编程...

    HashSet类的用法.pdf

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

    hashset类的使用

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

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

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

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

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

    Java基础加强_ArrayList_HashSet的比较及Hashcode分析

    在Java编程语言中,ArrayList和HashSet是两种常用的集合类,它们各自有其特性和应用场景。在实际开发中,理解它们的差异以及如何有效地利用它们是非常重要的。本篇将深入探讨ArrayList与HashSet的区别,并分析...

    HashSet去重

    ### HashSet去重原理详解 #### 一、概述 在Java编程语言中,`HashSet`是一种常用的集合类,属于`java.util`包的一部分。它不允许集合中有重复的元素,并且不保证集合中元素的顺序。`HashSet`之所以能够实现去重...

    c++用vector实现HashSet

    在C++编程中,HashSet是一种常用的集合数据结构,它提供了存储唯一对象的功能,类似于Java中的HashSet。虽然C++标准库中没有直接提供HashSet类,但我们可以利用其他容器,如`std::unordered_set`来实现类似的功能。...

    排序之HashSet和TreeSet的区别

    在Java编程语言中,集合框架是处理数据的重要组成部分,其中`HashSet`和`TreeSet`是两种常用的Set接口实现类。它们各自具有独特的特性和用途,理解它们的区别对于编写高效且正确的代码至关重要。 首先,`HashSet`是...

    treemap treeset hashset hashmap 简要介绍

    在Java编程语言中,集合框架提供了多种数据结构来存储和操作数据,其中`TreeMap`、`TreeSet`、`HashSet`以及`HashMap`是最常用的数据结构之一。这些集合类各自有着独特的特性和应用场景,下面将对它们进行详细介绍。...

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

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

    集合的概念及应用和HashSet保证数据不重复的原理

    关于“HashSet保证数据不重复的原理”,这涉及到HashSet内部的实现。HashSet基于HashMap实现,每个元素都是HashMap的一个键。在添加元素时,HashSet会调用对象的hashCode()方法生成哈希码,然后根据哈希码快速定位...

    集合类HashSet

    HashSet是其中的一种,它属于集合框架的一部分,提供了一种基于哈希表实现的无序、不可重复的元素集合。本文将深入探讨HashSet类及其相关的知识点。 首先,HashSet是由HashMap内部实现的,它利用了键值对(key-...

    java HashSet 集合排序

    java HashSet 集合排序,需要通过利用TreeSet集合排序。2013-10-30。

    hashSet底层去重原理.xmind

    hashSet底层去重原理

    HashSet和TreeSet.doc

    Set是java中一个不包含重复元素的collection。更正式地说,set 不包含满足e1....HashSet与TreeSet都是基于Set接口的实现类。其中TreeSet是Set的子接口SortedSet的实现类。Set接口及其子接口、实现类的结构如下所示。

    hashset产生不重复随机数

    利用hashset产生不重复随机数的函数,附含测试数据; 调用方法 int[] arr=noDup(max,num),max为最大的数,num为要产生的随机数个数

    20220424-笔记-HashSet扩容机制

    20220424-笔记-HashSet扩容机制

    1.HashSet和HashMap遍历.md

    自己写的例子,关于HashSet遍历和HashMap遍历的. 感谢大家参考

Global site tag (gtag.js) - Google Analytics