需要注意重写的hashcode方法是idea自动生成的,因为可能为负数,需要改动如下:
package com.liuheizi.demo;
import com.sun.org.apache.bcel.internal.generic.ANEWARRAY;
import java.util.HashMap;
import java.util.Objects;
class A{
int a;
double b;
public A(int a, double b) {
this.a = a;
this.b = b;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
A a1 = (A) o;
return a == a1.a &&
Double.compare(a1.b, b) == 0;
}
@Override
public int hashCode() {
return Objects.hash(a, b)<0?-Objects.hash(a,b):Objects.hash(a,b);
}
}
class MyHashMap<K