java中的Map判断重复的方法
2012-08-05 14:24
183 查看
本人推测是先用hash值判断后用equals()方法判断,如果有其一不等,则表示两对象不等。以下程序可验证
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class MapDemo04 {
public static void main(String[] args) {
Map <Person04,String>map=new HashMap<Person04, String>();
Person04 person=new Person04("abcd");
map.put(new Person04("zhangsan"), "a");
map.put(new Person04("haha"), "b");
map.put(new Person04("sadff"), "c");
map.put(person, "abc");
map.put(person, "cba");
Set <Map.Entry<Person04, String>> s=map.entrySet();
Iterator <Map.Entry<Person04, String>>iterator=s.iterator();
while(iterator.hasNext()){
Map.Entry<Person04, String> me=iterator.next();
System.out.println(me.getKey()+" "+me.getValue());
}
}
}
class Person04{
String name;
Person04(String name){
this.name = name;
}
public String toString(){
return this.name;
}
public int hashCode(){
return 1;
//return this.name.hashCode(); //***********1
}
public boolean equals(Object o){
//return true; //***********2
return false;
}
}
现在把两方法中的注释移下,注释上行或是下行,2*2=4种组合看下执行结果就可以得到推测结果
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class MapDemo04 {
public static void main(String[] args) {
Map <Person04,String>map=new HashMap<Person04, String>();
Person04 person=new Person04("abcd");
map.put(new Person04("zhangsan"), "a");
map.put(new Person04("haha"), "b");
map.put(new Person04("sadff"), "c");
map.put(person, "abc");
map.put(person, "cba");
Set <Map.Entry<Person04, String>> s=map.entrySet();
Iterator <Map.Entry<Person04, String>>iterator=s.iterator();
while(iterator.hasNext()){
Map.Entry<Person04, String> me=iterator.next();
System.out.println(me.getKey()+" "+me.getValue());
}
}
}
class Person04{
String name;
Person04(String name){
this.name = name;
}
public String toString(){
return this.name;
}
public int hashCode(){
return 1;
//return this.name.hashCode(); //***********1
}
public boolean equals(Object o){
//return true; //***********2
return false;
}
}
现在把两方法中的注释移下,注释上行或是下行,2*2=4种组合看下执行结果就可以得到推测结果
相关文章推荐
- JAVA中判断Array、List、Map、Set是否空的方法
- hashCode方法的作用----java判断来年各个元素是否重复的机制
- java 多种判断key是否在map中存在的方法
- java 多种判断key是否在map中存在的方法
- Java判断List中有无重复元素的方法
- java map 里面判断相等的hashcode方法
- java 多种判断key是否在map中存在的方法
- Java中的equals与hashCode方法(判断插入容器的内容是否重复)
- Java里List取并集方法retainAll不能用来判断是否有重复数据!
- javascript如何判断数组内元素是否重复的方法集锦
- java判断list为空的方法
- java json转map方法
- java中遍历map的四种方法
- Java删除ArrayList中的重复元素的2种方法
- java 遍历map 方法 集合 五种的方法
- java中判断字符是否是数字的几种方法
- java 几种遍历map的方法
- Java中判断对象是否相等的equals()方法使用教程
- Java-Collections.unmodifiableMap()方法
- java判断一个字符串是否为空的方法