美文网首页
HashMap和HashSet的区别

HashMap和HashSet的区别

作者: 风一样的code | 来源:发表于2020-04-15 11:44 被阅读0次

    HashMap和HashSet都是collection框架的一部分,它们让我们能够使用对象的集合。collection框架由自己的接口和实现,主要分为set,list和queue接口,它们有各自的特点,set集合中不允许对象有重复的值,list允许有重复的值,它对集合中的对象进行索引,queue的工作原理是FCFS算法,First Come,First Serve。

    二者区别

    什么是HashSet

    HashSet实现了Set接口,它不允许集合中有重复的值,当我们提到HashSet时每一件事情就是在将对象存储在HashSet之前,要先确保对象重写equals()和hashCode()方法,这样才能比较对象的值是否相等,以确保set中没有存储相同的对象,如果我们没有重写这两个方法,将会使用这个方法的默认实现。
    Set添加元素使用add方法,如果添加的值是重复的则会返回false,如果添加的值没有重复,则会返回true。

    什么是HashMap

    HashMap实现了Map接口,Map接口对键值进行映射,Map中不允许重复的键,Map接口有两个基本的实现,HashMap和TreeMap,TreeMap保存了对象的排列次序,而HashMap不能;HashMap允许键和值为null,HashMap是非synchronized的,而collection提供的方法是可以保证HashMap synchronized,这样在多线程中能保证只有一个线程访问修改map。

    如何保证HashMap线程安全

    1.使用 java.util.Hashtable 类,此类是线程安全的。
    2.使用 java.util.concurrent.ConcurrentHashMap,此类是线程安全的。
    3.使用 java.util.Collections.synchronizedMap() 方法包装 HashMap object,得到线程安全的Map,并在此Map上进行操作。
    4.自己在程序的关键方法或者代码段加锁,保证安全性,当然这是严重的不推荐。

    Map添加的对象的方法是put

    HashSet和HashMap的区别

    区别

    相关文章

      网友评论

          本文标题:HashMap和HashSet的区别

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