将列表输出限制为每行X个条目

时间:2016-04-12 02:15:09

标签: java output

我有一个单词地图,其中键是提供列表中的关键字,值是我文档中关键字索引的整数列表。

我想将每行列表的条目限制为设定的金额。类似的东西:

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 =
    []

1 个答案:

答案 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个元素,则打印回车符/换行符。