equals和hashcode方法

xiaoxiao2021-02-28  81

A.java

package com.peng.hashequal; public class A { @Override public boolean equals(Object obj) { System.out.println("判断equals"); return false; } @Override public int hashCode() { System.out.println("判断hashcode"); return 1; } }

TestA.java

package com.peng.hashequal; import java.util.HashMap; import java.util.Map; /* * hashCode返回1,当第一次插入时判断hashcode没有相同的,所以直接插入 * 当插入第二个时先判断hsshcode由于自定义的hashcode返回的值都是1,所以就 * 接着判断equals是否相等,由于定义的equals返回false,所以不相等,所以输出 * HashMap的大小为2 */ public class TestA { public static void main(String[] args) { Map<A,Object> map=new HashMap<A,Object>(); map.put(new A(), new Object()); map.put(new A(), new Object()); System.out.println(map.size()); } }

输出:

B.java

package com.peng.hashequal; public class B { @Override public boolean equals(Object obj) { System.out.println("判断equals"); return true; } @Override public int hashCode() { System.out.println("判断hashcode"); return 1; } }

TestB.java

package com.peng.hashequal; import java.util.HashMap; import java.util.Map; /* * hashCode返回1,当第一次插入时判断hashcode没有相同的,所以直接插入 * 当插入第二个时先判断hsshcode由于自定义的hashcode返回的值都是1,所以就 * 接着判断equals是否相等,由于定义的equals返回true,所以相等,不能插入,所以输出 * HashMap的大小为1 */ public class TestB { public static void main(String[] args) { Map<B,Object> map=new HashMap<B,Object>(); map.put(new B(), new Object()); map.put(new B(), new Object()); System.out.println(map.size()); } }

输出

转载请注明原文地址: https://www.6miu.com/read-79990.html

最新回复(0)