Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 垂直打印哈希映射_Java_Hashmap_Pretty Print - Fatal编程技术网

Java 垂直打印哈希映射

Java 垂直打印哈希映射,java,hashmap,pretty-print,Java,Hashmap,Pretty Print,我对Java很陌生,现在感觉很茫然 我正在制作一个程序,使用Apachi POI从excel文档中获取数据,并打印结果 我创建了一个hashmap,它使用一个“for”循环,循环遍历excel工作表,并将值存储在其中 Map<String, Integer> dataMap = new HashMap<String, Integer>(); 结果以以下格式打印: {A=1, Q=15, R=35, D=98, X=60, Y=21, N=57} 有没有一种方法可以打印

我对Java很陌生,现在感觉很茫然

我正在制作一个程序,使用Apachi POI从excel文档中获取数据,并打印结果

我创建了一个hashmap,它使用一个“for”循环,循环遍历excel工作表,并将值存储在其中

Map<String, Integer> dataMap = new HashMap<String, Integer>();
结果以以下格式打印:

{A=1, Q=15, R=35, D=98, X=60, Y=21, N=57}
有没有一种方法可以打印出我的hashmap,使它看起来更整洁,像一个列表?有点像这样:

A = 1
Q = 15
R = 35
D = 98
X = 60
Y = 21
N = 57
我找不到解决这个问题的办法。如果有人能告诉我一步一步如何打印出我想要的代码,那就太棒了

for(条目:dataMap.entrySet()){
for (String key : dataMap.keySet()) {
    System.out.println(key + " = " + dataMap.get(key));
}
System.out.println(entry.getKey()+“=”+entry.getValue()); }
如果希望按插入顺序输出,请使用LinkedHashMap

已更新TreeMap示例:

    Map<String, Integer> dataMap = new TreeMap<String, Integer>();
    dataMap.put("D", 4);
    dataMap.put("B", 2);
    dataMap.put("F", 6);
    dataMap.put("E", 5);
    dataMap.put("C", 3);
    dataMap.put("G", 7);
    dataMap.put("A", 1);


    for (Entry<String, Integer> entry : dataMap.entrySet()) {
        System.out.println(entry.getKey() + " = " +        entry.getValue());
    } 
Map dataMap=newtreemap();
dataMap.put(“D”,4);
dataMap.put(“B”,2);
dataMap.put(“F”,6);
dataMap.put(“E”,5);
dataMap.put(“C”,3);
dataMap.put(“G”,7);
dataMap.put(“A”,1);
for(条目:dataMap.entrySet()){
System.out.println(entry.getKey()+“=”+entry.getValue());
} 

为什么不遍历映射并以任何方式打印它呢?使用
entrySet()
进行迭代可能会更好,以防止所有那些
get()
调用的开销。哇,Rahin,你的代码工作得非常完美。但是@Andreas,你能更深入地解释为什么我应该使用entrySet()吗?如果我使用Rahin的代码,我会遇到什么潜在问题?在正确性方面,你不会遇到问题(即,你总是有正确的输出)。但是,get()调用可能会很昂贵。通常,get需要O(1)个时间,但在绝对最坏的情况下可能需要O(n)个时间。通过使用使用entrySet()的解决方案,您不再在映射上调用.get(key),并且可能避免特定get操作的O(n)最坏情况。我同意,为了获得最佳实践,可以迭代entrySet(),但您可能不会注意到以下方面的任何内容:performance@ihoaxed没有问题,但是使用
entrySet()
,就像Dinil的回答一样,是在不进行映射查找的情况下检索值。虽然地图查找速度非常快,但不进行地图查找速度更快。你可能不会注意到一个不同的地方,所以这是一个小问题。我明白了。谢谢大家的回复。这真的很有帮助。还有,@Rahin,“O(1)”和“O(n)”是什么意思?我在自学Java,对这一切我都很陌生!如果您希望输出按键排序,请使用
TreeMap
@Andreas。即使我已经有了正确的代码。一个人如何用树图来做这件事?
    Iterator it = dataMap.entrySet().iterator();
    while (it.hasNext()) {
        Map.Entry pair = (Map.Entry) it.next();
        System.out.println(pair.getKey() + " = " + pair.getValue());
    }
    for (Entry<String, Integer> entry : dataMap.entrySet()) {
        System.out.println(entry.getKey() + " = " + entry.getValue());
    } 
    Map<String, Integer> dataMap = new TreeMap<String, Integer>();
    dataMap.put("D", 4);
    dataMap.put("B", 2);
    dataMap.put("F", 6);
    dataMap.put("E", 5);
    dataMap.put("C", 3);
    dataMap.put("G", 7);
    dataMap.put("A", 1);


    for (Entry<String, Integer> entry : dataMap.entrySet()) {
        System.out.println(entry.getKey() + " = " +        entry.getValue());
    }