我没有解释一些大问题,而是跳过所有这些并列出我正在努力解决的小循环。无论如何,我必须打印地图的键,所以我使用一种特殊的方式通过切换值和键来打印键。
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个数字将根据我的程序随机进入parens中的数字。 这是我的结果:
[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]之后,依此类推。 谢谢!
答案 0 :(得分:2)
所以有一些技巧可以让它不打印所有这些机器语言的东西吗?
是的。
请勿尝试打印不会覆盖Object.toString()
的班级实例。那种&#34;机器语言看东西&#34;只是Object.toString()
的输出。
但是,我怀疑您的真实代码是这样做的:
if (entry.getValue().equals(i)){
System.out.print(entry.toString());
}
因为"HashSet$HashEntry@7d4991ad"
看起来像打印HashSet.HashEntry
对象时会得到的输出。 (另一种可能是您在HashSet.HashEntry
中使用Map
个对象作为键。)