将映射的列表输出限制为每行 X 个条目
Limit list output from a map to X entries per line
我有一个词映射,键是提供列表中的关键字,值是整数列表,在我的文档中具有关键字的索引。
我想将每行的列表条目限制为设定数量。类似于:
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 =
[]
换行:
writer.print("\n"); //Line feed only
收件人:
writer.print("\n\r"); //Carriage return + line feed
此外,您遇到了一个问题,即您不想在地图的条目上换行,而是在存储在地图的单个键中的列表的第 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 个元素,打印一个 carriage-return / line feed.
我有一个词映射,键是提供列表中的关键字,值是整数列表,在我的文档中具有关键字的索引。
我想将每行的列表条目限制为设定数量。类似于:
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 =
[]
换行:
writer.print("\n"); //Line feed only
收件人:
writer.print("\n\r"); //Carriage return + line feed
此外,您遇到了一个问题,即您不想在地图的条目上换行,而是在存储在地图的单个键中的列表的第 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 个元素,打印一个 carriage-return / line feed.