我想比较两个自创建的对象,但是containsKey()总是返回true。
映射结构为:
Map<MethodReport,List<MethodReport>> calledMap下面是我的MethodReport类:
public class MethodReport {
private String nombre;
private String paquete;
private int LOC;
private String resultado;
private int lineaClase;
private String tipo;
public MethodReport() {
}
public MethodReport(String nombre, String paquete, int lOC, String resultado, int lineaClase, String tipo) {
this.nombre = nombre;
this.paquete = paquete;
LOC = lOC;
this.resultado = resultado;
this.lineaClase = lineaClase;
this.tipo = tipo;
}
public MethodReport(String nombre) {
nombre = nombre;
}
public String getNombre() {
return nombre;
}
@Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (!(obj instanceof MethodReport)) {
return false;
}
MethodReport m = (MethodReport) obj;
return this.nombre.equals(m.getNombre());
}
@Override
public int hashCode() {
return Objects.hash(this.nombre);
}
@Override
public String toString() {
return this.paquete+this.nombre;
}
}我认为问题出在hashCode()和equals上。非常感谢。
发布于 2021-05-11 17:53:49
将nombre赋给同名的字段变量,而不是单参数构造函数中的自身
this.nombre = nombre;https://stackoverflow.com/questions/67484358
复制相似问题