我不会解释一些大问题,而是跳过所有这些并列出我正在努力解决的小循环。无论如何,我必须打印 map 的键,所以我使用一种特殊的方式通过交换值和键来打印键。
for (int i = 0; i < elementData.length; i++){
System.out.print("[" + i + "]");
for (Entry<HashEntry<E>, Integer> entry : foob.entrySet()){
if (entry.getValue().equals(i)){
System.out.print(entry.getKey().toString());
}
}
}
这是我的目标:像这样打印 [0][1][2][3] 直到 20。除此之外,根据我的程序,9 个数字将随机出现在括号中的这些数字之间。 这是我的结果:
[0][1]HashSet$HashEntry@7d4991ad[2][3][4]HashSet$HashEntry@4554617cHashSet$HashEntry@28d93b30[5][6][7][8][9]HashSet$HashEntry@232204a1[10][11]
所以有一些技巧可以让它不打印所有这些看起来像机器语言的东西。无论如何,我必须做什么?看起来 1 件事应该出现在 [1] 之后,2 件事应该出现在 [4] 之后,一些事情应该出现在 [9] 之后,依此类推。 谢谢!
最佳答案
So there's just some trick to make it not print all this machine language looking stuff?
是的。
不要尝试打印未重写Object.toString()
的类的实例。 “看起来像机器语言的东西”只是 Object.toString()
的输出。
但是,我怀疑您的真实代码正在执行此操作:
if (entry.getValue().equals(i)){
System.out.print(entry.toString());
}
因为"HashSet$HashEntry@7d4991ad"
看起来就像打印HashSet.HashEntry
对象时得到的输出。 (另一种可能性是您已使用 HashSet.HashEntry
对象作为 Map
中的键。)
关于java - HashMap-java程序问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37893858/