什么是hashset?

hashset的定义

开门见山,说白了,hashset就是阉割版的hashmap(底层都是哈希表实现的,但一个存的是键值对,一个存的只是对象,直接阉割了一半啊)

hashset的特点

  • 无序性
  • 唯一性(允许使用null)
  • 本质上来讲就是hashmap
  • 需要重写hashcode()方法和equals()方法(这是废话,是个集合类都需要重写)
  • HashSet没有提供get()方法,同HashMap一样,因为Set内部是无序的,所以只能通过迭代的方式获得

hashset和hashmap的联系

  • HashSet初始化(构造方法)是采用HashMap实现的(不信看源码),也就是说hashset=hashmap的实例,HashSet 的绝大部分方法都是通过调用 HashMap 的方法来实现的
  • HashMap的key=HashSet的对象,HashMap的value=HashSet中定义的一个统一常量private static final Object PRESENT = new Object()。   也就是说,在hashset中,我们用add方法添加元素时,传给底层hashmap实例的还是键值对(两个对象),只不过key直接就是对象元素本身,而value则是一个object常量(这就是让我们把这个value忽略掉,当成只传了一个对象)

  • hashset中的 添加方法 是add,而hashmap中的添加方法是put。                                                                                  put()方法应用于map集合中,add()方法应用于set集合中。 二者的主要区别是:返回值类型不一样。add()放回布尔(boolean)类型。 因为像Set集合中不允许添加重复的元素。当HashSet调用add()方法时,如果返回false,表示添加不成功。 put()的使用是:添加时出现相同的键,那么后添加的值会替换(覆盖)掉此键对应的原来的值。并返回此键对应的原来的值。

 hashset的添加方法内部原理图:


方法

1.构造方法



2.添加元素

hashset.add(E e):返回boolean型,如果此 set 中尚未包含指定元素,则添加指定元素;如果此 set 已包含该元素,则该调用不更改 set 并返回 false。


3.更多请看hashmap的方法

hashset.clear():从此 set 中移除所有元素。

hashset.remove(Object o):如果指定元素存在于此 set 中,则将其移除。

hashset.isEmpty():如果此 set 不包含任何元素,则返回 true

hashset.contains(Object o):如果此 set 包含指定元素,则返回 true

hashset.size():返回此 set 中的元素的数量(set 的容量)。

。。。。。。。。

  • 3
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值