【问题标题】:Formatting the output of a Tree Map格式化树形图的输出
【发布时间】:2015-06-26 16:55:17
【问题描述】:

我有一个 TreeMap,打印时如下所示

private Map<Double, Double> map = new TreeMap<Double, Double>();
System.out.println(map);
output:
{1=2.9, 3=5.4, 5=98.4, 4=90.1, 2=87.7}

我想知道如何打印地图以使其看起来更像

1 = 2.9
2 = 87.7
3 = 5.4
4 = 90.1
5 = 98.4

现在我能做的就是执行System.out.println(map); 并获得如上所示的输出。

【问题讨论】:

  • 如果你@Override toString() 方法,你可以让它打印成你喜欢的任何东西。只需制作您自己的“PrettyTreeMap”或您想要查看的输出。
  • 提示:map.keySet() 返回键,集合可以按顺序迭代。您所要做的就是编写用于打印的循环。
  • @laune 更好的提示,map.entrySet() 返回键和值,因此您不必使用 for (key : map) { map.get(key); } 反模式:-)。
  • @bkail 我的方法每个条目只需要一个方法调用:-)
  • 你为什么不创建一个循环,用map.get(key)按顺序返回键?

标签: java arrays dictionary printing output


【解决方案1】:

您可以自己迭代条目:

for (Map.Entry<Double, Double> entry : map.entrySet()) {
    System.out.println(entry.getKey() + " = " + entry.getValue());
}

如果您使用的是 Java 8,也可以使用 lambda:

map.entrySet().forEach(e -> System.out.println(e.getKey() + " = " + e.getValue()));
map.forEach((k, v) -> System.out.println(k + " = " + v));

【讨论】:

  • 我认为你可以省略stream()。
  • 其实我可以直接使用 Map.forEach 。当我写下答案时,我显然脑子里有流:-)。
【解决方案2】:
Set treeSet = tmap.entrySet();
Iterator iterator = treeSet.iterator();

 while(iterator.hasNext()) {
     Map.Entry integer = (Map.Entry)iterator.next();
     System.out.print(integer.getKey() + ": ");
     System.out.println(integer.getValue());
 }

使用 Java 的 SetIterator。确保包含以下导入:

import java.util.Iterator;
import java.util.Map;
import java.util.Set;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-02
    • 1970-01-01
    • 2023-01-04
    • 1970-01-01
    • 2010-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多