gpt4 book ai didi

Java - TreeMap 不检索键

转载 作者:太空宇宙 更新时间:2023-11-04 10:28:44 25 4
gpt4 key购买 nike

我遇到了一个问题,我无法准确理解这里发生了什么。我使用 TreeMap<Custom_class, TreeMap<Custom_class, Integer>> 进行操作

这是代码片段:

TreeMap<Coordenada, Integer> helper_tree;
boolean newLine = false;

for (Linea l : this.lineas) {
int helper = 0;
newLine = true;
Coordenada helper_co = null;

for (Coordenada c : l.getNodosLinea()) {
helper++;

if (!c.getEsEstacion() && !c.getEsCruce()) continue;
if (newLine) { map.putIfAbsent(c, new TreeMap<>()); helper_co = c; helper = 0; newLine = false; continue; }

helper_tree = new TreeMap<>();
helper_tree.put(helper_co, helper * 200);
map.put(c, helper_tree);
map.get(helper_co).put(c, helper * 200);
helper_co = c;
helper = 0;

}
}

在执行中,突出显示的行失败,获得 0 个键条目: debug mode in intellij

这是TreeMap结构: TreeMap structure

我不明白为什么在 .get(key) 处失败当 key Coordenada(12,2)存在。之前的所有工作都很好。

Coordenada

public class Coordenada implements Comparable<Coordenada>{
private int[] coordenada = new int[2];
private boolean esEstacion = false;
private boolean esCruce = false;

public Coordenada(int[] coordenada){
this.coordenada[0] = coordenada[0];
this.coordenada[1] = coordenada[1];
}

public void setCoordenada(int[] coordenada) {
this.coordenada = coordenada;
}

public int[] getCoordenada() {
return coordenada;
}

public void switchEstacion(){
this.esEstacion = !this.esEstacion;
}

public void switchCruce() { this.esCruce = !this.esCruce; }

public boolean getEsEstacion() {
return this.esEstacion;
}

public boolean getEsCruce() { return this.esCruce; }

@Override
public boolean equals(Object coord){
Coordenada coordTemp = (Coordenada) coord;
if (this.coordenada[0] != coordTemp.coordenada[0])
return false;
if (this.coordenada[1] != coordTemp.coordenada[1])
return false;
return true;
}

@Override
public int compareTo(Coordenada o) {
if (this.coordenada[0] > o.coordenada[0] )
return 1;
if (this.coordenada[1] > o.coordenada[1] )
return 1;
if (this.coordenada[0] < o.coordenada[0])
return -1;
if (this.coordenada[1] < o.coordenada[1])
return -1;
return 0;
}

@Override
public String toString() {
return "(" + coordenada[0] + ", " + coordenada[1] + ")";
}

}

完美插入Coordenada(12,2)并修改之前的helper_co = Coordenada(10,2) debugger variables

感谢您的帮助!

最佳答案

查看您的 compareTo 函数

(0,1) compareTo (1,0) returns 1
(1,0) compareTo (0,1) returns 1

这是模棱两可的。

关于Java - TreeMap 不检索键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50299394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com