HashMap和HashSet的区别

本文深入解析了HashMap与HashSet这两种Java集合框架中的核心数据结构。详细介绍了HashMap作为键值对存储的特点,包括允许null键和值、非线程安全性等;同时,也探讨了HashSet如何通过哈希算法高效地存储唯一元素,并比较了它们之间的异同。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HashMap是基于哈希表的Map接口实现的,存储的是键值对。它所提供所有可选的映射操作。并允许使用null值和null键,但不保证映射的顺序。HashMap是基于HashCode的,若想正确使用它就需要重写hashcode()和equals()方法。HashMap不是线程安全的,若要线程安全,可用:

 Map m = Colletions.synchronizedMap(new HashMap( ));

HashMap键是唯一的,值是可以重复的。

HashSet实现了Set接口,存储的是对象。按照哈希算法来存取容器中的对象,具有很好的存取和查找性能。当想容器中加入一个对象时,HashSet会调用该对象的hashCode()方法来获取哈希码,然后根据这个哈希码进一步计算出对象在这个容器中的计算位置。不允许集合中有重复的值。HashSet 是线程不安全的。

线程安全的有:Vector、HashTable、Proprties

线程不安全的有:HashSet、TreeSet、HashMap、TreeMap、ArrayList、LinkedList.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值