我有一个单词地图,其中键是提供列表中的关键字,值是我文档中关键字索引的整数列表。
我想将每行列表的条目限制为设定的金额。类似的东西:
and =
[1,2,3,
4,5,6]
但我一直在接受:
and =
[1,2,3,4,5,6]
我现在拥有的:
private Map<String, List<Integer>> keywordMap = new HashMap<String, List<Integer>>();
...
try (PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(properties.getProperty("output.dir") + properties.getProperty("output.file.keyword")))))
{
int limit = 0;
for (Map.Entry<String, List<Integer>> entry : keywordMap.entrySet())
{
writer.print(entry.getKey() + " =\n" + entry.getValue());
limit++;
if (limit == 3)
{
writer.print("\n");
limit = 0;
}
}
}...
另外,作为一个额外的问题,我将如何输出关键字不在文档中的情况?或者只是
portmanteau =
[]
答案 0 :(得分:0)
更改行:
writer.print("\n"); //Line feed only
要:
writer.print("\n\r"); //Carriage return + line feed
此外,您还有一个问题是,您希望不在地图条目上划分该行,而是在地图的单个键中存储的List的第3个条目上。
所以,你需要这样的东西:
for (String key: keywordMap.keySet()) {
List<Integer> values = keywordMap.get(key);
writer.print(key + "=\n\r[");
for(int i = 0; i < values.length(); i++){
writer.print(values.get(i));
if(i % 3 == 0){
writer.print("\n\r");
}
}
writer.print("]\n\r");
}
您正在处理每个密钥并获取它的关联值列表。 然后使用for循环遍历值列表和每次迭代,如果计数器的值是i%3 == 0:或每个第3个元素,则打印回车符/换行符。