【问题标题】:Hashmap into csv/excel easily?Hashmap 轻松转换为 csv/excel?
【发布时间】:2015-01-30 18:01:58
【问题描述】:

我需要一点帮助。

我在 TreeMap 中有 TreeMap TreeMap<String,TreeMap<String,Integer>>

我的文本输出如下所示(单行示例):

Phoneme "Y":     ["**"=46,15%] ["I"=30,77%] ["Y"=7,69%] ["i:"=15,38%] 

这意味着 31% 的音素 Y 被识别为 I,7.7% 被识别为 Y 等等......

因此,我需要一个表格(电子表格),它在垂直(选定的音素)和水平(预测)线上每个音素和单元格中对应于选定的行和行的概率。这意味着例如在“Y”行中的概率如上所述,其他的都是 0%

什么是最好的解决方案?我应该手动对其进行编程以获取这些信息并将其按顺序保存在 csv 中还是有更好的方法?

【问题讨论】:

  • 我认为您必须使用 API。见here
  • 谢谢,我试试看!

标签: java excel csv hashmap treemap


【解决方案1】:

使用 API 没有任何问题,尤其是在您希望自己的数据包含特殊字符的情况下。然而,这是一个你可以使用的 Java 8 one liner,如果你有一个 CSV API,它会更干净:

treeMap.entrySet().forEach((e)->{
    System.out.print("\""+e.getKey()+"\"");
    e.getValue().entrySet().forEach((m)->System.out.print(",\"" + m.getKey() + "\"," + m.getValue()));
    System.out.println();
});

"Y","**",46.15,"I",30.77,"Y",7.69,"i",15.38

【讨论】:

    【解决方案2】:

    这是一个使用传统 Java 创建表格 CSV 输出的示例,没有外部库。

    static String toCSV(Map<String, Map<String, Integer>> phonemeStats)
    {
        StringBuilder csv = new StringBuilder(512);
    
        // get ordered set of all statistic names
        Set<String> statNames = new TreeSet<String>();
        for (Map<String, Integer> stats: phonemeStats.values()) {
            statNames.addAll(stats.keySet());
        }
    
        // write column headings line
        csv.append("phoneme");
        for (String name: statNames) {
            csv.append(",").append(name);
        }
    
        // write each phoneme line
        for (Map.Entry<String, Map<String, Integer>> entry: phonemeStats.entrySet()) {
            csv.append(System.lineSeparator());
            csv.append(entry.getKey());
            for (String name: statNames) {
                Integer value = entry.getValue().get(name);
                csv.append(",");
                if (value != null) {
                    csv.append((value / 100d) + "%");
                }
            }
        }
    
        return csv.toString();
    }
    

    使用此输入(如Map&lt;String, Map&lt;String, Integer&gt;&gt;):

    Phoneme "Y":     ["**"=46,15%] ["I"=30,77%] ["Y"=7,69%] ["i:"=15,38%] 
    Phoneme "Z":     ["**"=32,45%] ["I"=10,42%] ["X"=26,97%] ["i:"=5,38%] 
    

    上述方法返回:

    phoneme,**,I,X,Y,i:
    Y,46.15%,30.77%,,7.69%,15.38%
    Z,32.45%,10.42%,26.97%,,5.38%
    

    然后您可以将该输出写入.CSV 文件并在 Excel 中打开。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-18
      • 1970-01-01
      相关资源
      最近更新 更多