集合之HashSet

网友投稿 689 2022-10-29

集合之HashSet

集合之HashSet

/**作者:呆萌老师*☑csdn认证讲师*☑高级讲师*☑腾讯课堂认证讲师*☑网易云课堂认证讲师*☑华为开发者学堂认证讲师*☑爱奇艺千人名师计划成员*在这里给大家分享技术、知识和生活*各种干货,记得关注哦!*/

1、简介

HashSet是底层为哈希表实现的一个集合框架。

2、层次结构

3、特性

1、不允许有重复的值,体现了元素的唯一性。

2、允许有null。

3、元素排列的无序性。

4、恒定的时间复杂度。

5、线程不安全。

输出的顺序和存入的顺序可能不一致,但每个元素在内存中的位置是固定的         无序的原因:在内存中有个哈希表,里面会有很多的元素位置,hashset对象对根据添加进来的值调用hashCode方法返回一个索引值,           根据这个索引值找到哈希表中的一个位置,存入元素.每次相同的值调用hashCode返回的索引值是固定的         不能重复: 可以存入null但null也不能重复.          怎么实现不能重复的呢?         1.先根据hashCode算是不是在同一个索引的位置.         2.如果在同一个位置再调用equals方法判断是不是同一个对象(或是不是相同的值)。

4、代码实例

HashSet hashSet=new HashSet(); hashSet.add("aa"); hashSet.add("bb"); hashSet.add("cc"); hashSet.add("dd"); hashSet.add("aa"); System.out.println(hashSet);

HashSet hashSet=new HashSet(); //如果我比较的不是两个对象是否相同,而是比较两个对象的name是否相同 不让存进去 怎么办? //如果想要比较的是对象的值 则需要重写equals方法,而在重写equals方法之前 一定要先重写hashCode方法 否则equals没用 hashSet.add(new Person("zhangsan", 18)); hashSet.add(new Person("lisi", 23)); hashSet.add(new Person("zhangsan",18)); System.out.println(hashSet);

HashSet hSet=new HashSet(); Person person=new Person("xiaobai", 18); hSet.add(person); hSet.add(new Person("dabai", 28)); hSet.add(new Person("xiaoxiaobai", 28)); System.out.println(hSet.contains(person)); //包含 hSet.remove(person); //移除 //System.out.println(hSet); //遍历 Iterator iterator= hSet.iterator(); while(iterator.hasNext()) { Person person2=iterator.next(); System.out.println(person2); }

更多关注

​​https://edu./course/20124.html​​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:基于DDD与AdminLte、BootStrap搭建的MVC与WebApi基础框架
下一篇:XestiMonitors一个采用Swift编写的可扩展监测框架
相关文章

 发表评论

暂时没有评论,来抢沙发吧~