HashMap- java程序问题

时间:2016-06-18 06:11:50

标签: java hashmap

我没有解释一些大问题,而是跳过所有这些并列出我正在努力解决的小循环。无论如何,我必须打印地图的键,所以我使用一种特殊的方式通过切换值和键来打印键。

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]之后,依此类推。 谢谢!

1 个答案:

答案 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个对象作为键。)