重新格式化列表中输出的文本文件(Java)

时间:2018-09-01 08:36:34

标签: java

我有一些代码可以创建字典(哈希图)并计算所述文档中单词的出现频率。然后,我有一些代码可以在字典中创建值列表,并使用collections.sort()方法对它们进行排序,然后将前10个输出到文本文件中。

我的问题是如何更改输出格式?当前,文本文件如下:

word = 1
word = 2
word = 3
word = 4
word = 5

如何更改其格式和结构,以便可以在将来的应用程序中使用数据?例如D3?

我已经包含了创建列表并将其打印到文本文件的代码。

欢呼

private static List<Map.Entry<String, Integer>> sortTheHashMap(HashMap<String, Integer> values) throws IOException {

    Set<Entry<String, Integer>> set = values.entrySet();
    List<Entry<String, Integer>> list = new ArrayList<Entry<String, Integer>>(set);
    Collections.sort( list, new Comparator<Map.Entry<String, Integer>>()
    {
        public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2)
        {
            return (o2.getValue()).compareTo(o1.getValue());
        }
    } );

    for(Map.Entry<String, Integer> entry:list){
        System.out.println(entry.getKey());
    }

    FileWriter fw;
    File fileName;

    fileName = new File("xxx.txt");
    fw = new FileWriter(fileName, true);
    int i = 0;
    for (Map.Entry<String, Integer> counts : list) {
        fw.write(counts + "\n\n");
        i += 1;
        if (i == 10) {
            break;
        }
    }

    fw.close();

    return list; 
}

1 个答案:

答案 0 :(得分:0)

根据this description of what D3 can load,您有很多选择。其中之一是CSV文件,因此您可以将输出更改为:

fw.write(counts.getKey() + "," + counts.getValue() + "\n");

对于制表符分隔的列表,也可以将“,”替换为“ \ t”。

编辑:根据请求,这是使用StringBuilder的方法。

int i = 0;
StringBuilder sb = new StringBuilder();
for (Map.Entry<String, Integer> counts : list) {
    sb.length(0);
    sb.append(counts.getKey());
    sb.append(",");
    sb.append(counts.getValue());
    sb.append("\n");
    fw.write(sb.toString());
    i += 1;
    if (i == 10) {
        break;
    }
}

您可以将String的开发变成一种方法,以减少循环中的麻烦。但出于基本目的,它用StringBuilder来说明这一点。