我有一些代码可以创建字典(哈希图)并计算所述文档中单词的出现频率。然后,我有一些代码可以在字典中创建值列表,并使用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;
}
答案 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
来说明这一点。