HashSet和HashMap
来源:互联网 发布:mac book如何复制粘贴 编辑:程序博客网 时间:2024/05/18 22:43
一、什么是HashSet
HashMap实现了Map接口,Map接口对key和value进行映射,Map中不存在重复的key,Map接口有两个基本实现TreeMap和HashMap 其中TreeMap的实现对象保存时的次序,HashMap不能。HashMap是非synchronized,但Collection架构提供方法保证HashMap的Synchronized,当多线程访问HashMap时,只有一个线程能更改Map。
HashSet实现了Set接口,在他的集合中不允许有重复的对象,想要存储对象到HashSet之前必须覆写equals()和hashCode()接口,否则无法实现比较两个对象是否相等,以及是否重复了。HashSet()使用public boolean add(Object o)的方法在Set中添加元素,当对象重复时会返回一个false。
HashMap实现了Map接口,Map接口对key和value进行映射,Map中不存在重复的key,Map接口有两个基本实现TreeMap和HashMap 其中TreeMap的实现对象保存时的次序,HashMap不能。HashMap是非synchronized,但Collection架构提供方法保证HashMap的Synchronized,当多线程访问HashMap时,只有一个线程能更改Map。
下面是HashSet的代码,其覆写了hashCode()和equals()方法,如果不覆写任意其中一个,那么相同的对象会有不同的hash值,也就是说HashSet中将会有重复的对象了。
package HashTest;import java.util.HashSet; import java.util.Iterator; class Boy2 { private int age; private String name; public Boy2(int age, String name) { super(); this.age = age; this.name = name; } public int getAge() { return age; } public String getName() { return name; } public int hashCode(){ return this.name.hashCode()+age; } /*public boolean equals(Object obj) { Boy2 b=(Boy2) obj; boolean result=this.age==b.age&&this.name.equals(b.name); return result; } */ //屏蔽上面的equals()或者hashCode()方法将会使对象重复 @Override public String toString() { return "boy3 [age=" + age + ", name=" + name + "]"; } } public class HashTest1 {public static void main(String args[]){Boy2 b1 = new Boy2(43, "zhangsan");Boy2 b2 = new Boy2(33, "lisi");Boy2 b3 = new Boy2(55, "wangwu");Boy2 b4 = new Boy2(43, "zhangsan");HashSet hashset = new HashSet();hashset.add(b1);hashset.add(b2);hashset.add(b3);hashset.add(b4);Iterator iterator = hashset.iterator();while(iterator.hasNext()){System.out.println(iterator.next());}}}
2 0
- HashSet 、HashMap 和 HashTable
- Hashtable、HashMap和HashSet
- HashSet和HashMap
- hashmap和hashset区别
- hashSet和hashmap
- HashMap和HashSet详解
- 【javaSE】HashSet和HashMap
- HashSet和HashMap
- HashSet和HashMap分析
- HashSet和HashMap
- HashSet和HashMap比较
- HashMap和HashSet解析
- hashmap和hashset联系
- HashMap和HashSet
- HashMap和HashSet
- HashSet和HashMap
- HashMap和HashSet
- HashMap和HashSet、hashcode
- BNUOJ-4057-魔方系列——最小装箱
- 有哪些看起来很酷炫的技能其实并不难学会?
- Android 裁剪图片的解决方案
- new,关于effectivec++20页内容来个总结1
- 接入Paypal支付
- HashSet和HashMap
- Mongo 启动命令&参数说明
- 人人都看得懂的正则表达式教程
- bootstrap初体验--所有图标链接
- [notes] ImageNet Classification with Deep Convolutional Neual NetworkPaper: ImageNet Classification
- C# Hashtable源码剖析
- Centos 6.5 安装Nginx
- UV 坐标
- (案例1)副本集+分片部署