浅谈HashSet

作者: 小鱼嘻嘻 | 来源:发表于2017-10-28 21:44 被阅读11次
HashSet结构图
HashSet.png
HashSet主要方法
  • public boolean add(E e)
  • public boolean remove(Object o)
HashSet方法解读

public boolean add(E e)源码:

//hashset 利用的是hashmap,所以每次放入的value都是PRESENT
private static final Object PRESENT = new Object();
public boolean add(E e) {
        //可以看到,hashset利用的是hashmap的key,把它对应的值放入到key里,value放入的都是固定的值
        return map.put(e, PRESENT)==null;
    }

public boolean remove(Object o)源码:

 public boolean remove(Object o) {
        //hashmap的删除最终会返回删除对象的value值,hashset通过判断这个value值是不是等于PRESENT来判断是否删除成功
        return map.remove(o)==PRESENT;
    }
HashSet遍历方式
 // one
for (Object o : set) {
    System.out.println(o);
 }
// two
 Iterator iterator = set.iterator();
 while (iterator.hasNext()) {
       System.out.println(iterator.next());
  }
HashSet其他特性介绍
  • hashset是由hashmap构成的,主要利用的就是hashmap的key来保存相应的值
  • hashset的值是不可以重复的,主要性质是由hashmap决定的,hashmap重复的key算一个key,hashset是可以放入为空的元素的。
  • hashset也不是线程安全的,多线程环境下操作也是有问题的。

相关文章

  • 浅谈HashSet

    HashSet结构图 HashSet主要方法 public boolean add(E e) public boo...

  • HashSet浅谈

    Java的集合类比较庞大, 来看一个简单的架构图。 我们可以看到Java的Set中的数据是不重复的,无序的。 而H...

  • 浅谈HashSet和HashCode

    一.HashSet Kotlin中 ==HashSet==是一个集合类,它扩展了==AbstractMutable...

  • 2019 算法面试相关(leetcode)--哈希表

    哈希表相关的原理可以参考下:浅谈哈希表(HashTable)深入理解哈希表哈希表的理解理解HashSet及使用 哈...

  • java8中hashset源码分析

    分析大纲 hashset实现原理 hashset代码分析 1. hashset实现原理 hashset存储无序,不...

  • HashSet的用法

    java集合——HashSet的用法 一、HashSet的构造 二、HashSet添加元素 三、遍历HashSet...

  • HashSet, LinkedHashSet源码

    目录 HashSet LinkedHashSet HashSet 对于HashSet而言,它是基于HashMap实...

  • Set解析

    概览 上图为HashSet,LinkedSet,TreeSet对比 HashSet 可见HashSet其实就是实现...

  • Java集合之HashSet源码分析

    阅读目录 一、HashSet简介 二、HashSet源码分析 三、HashSet的应用示例代码

  • HashMap 和 HashSet 区别

    看过 HashSet 源码的人就应该知道:HashSet 底层就是基于 HashMap 实现的。(HashSet ...

网友评论

    本文标题:浅谈HashSet

    本文链接:https://www.haomeiwen.com/subject/doxepxtx.html