是否可以格式化标准java列表输出?
我有一个包含125个整数的java列表。打印列表时的输出是标准列表输出:[5、54、75,…]。所有整数都打印在一条长线上。我意识到我可以循环并在所需数量的整数后面添加\n。是否可以格式化输出以在列出10个整数后添加换行符,同时保持此标准输出,而不使用循环 所需的输出样式:是否可以格式化标准java列表输出?,java,Java,我有一个包含125个整数的java列表。打印列表时的输出是标准列表输出:[5、54、75,…]。所有整数都打印在一条长线上。我意识到我可以循环并在所需数量的整数后面添加\n。是否可以格式化输出以在列出10个整数后添加换行符,同时保持此标准输出,而不使用循环 所需的输出样式: [5, 54, 75, 56, 76, 87, 56, 98, 56, 93 47, 95, 65, 85, 48, 85, 65, 68, 45, 89 84, 56, 62] 他们是我在研究中没有找到的prin
[5, 54, 75, 56, 76, 87, 56, 98, 56, 93
47, 95, 65, 85, 48, 85, 65, 68, 45, 89
84, 56, 62]
他们是我在研究中没有找到的printf或format方法来获得所需的每行10整数输出吗
private void printKeywordOccurrences(PrintWriter writer) {
for (Map.Entry<String, List<Integer>> entry : keywordMap.entrySet()) {
writer.println(entry.getKey() + " =");
writer.print("[");
List occurrList = entry.getValue();
int lastElement = occurrList.size();
if (!occurrList.isEmpty()) {
for (int i = 0, j = 0; i < (lastElement - 1); i++, j++) {
writer.print(occurrList.get(i));
writer.print(",");
if (j == 10) {
writer.println();
j = 0;
} else {
writer.print(" ");
}
writer.print(occurrList.get(lastElement - 1));
}
writer.println("]\n");
}
}
使用正则表达式查找每组10个整数,并为其添加换行符:
String formatted = list.toString().replaceAll("((\\d+, ){9}\\d+), ", "$1" + System.lineSeparator());
您可以使用如下递归解决方案,您会注意到第二个printList调用第一个printList
private static void printList(List<?> al, int index) {
// Set up an ending condition.
if (al == null || index >= al.size()) {
// close brace, print newline.
System.out.print("]");
System.out.println();
return;
}
// are we at the first one?
if (index > 0) {
if (index % 10 == 0) {
// interval of ten, new line.
System.out.println(",");
} else {
// just a comma and a space.
System.out.print(", ");
}
} else {
// we are at the first one, open bracket.
System.out.print("[");
}
// print the list entry
System.out.print(al.get(index));
// recurse.
printList(al, index + 1);
}
// The public method signature.
public static void printList(List<?> al) {
printList(al, 0);
}
他们是我在研究中没有找到的printf或format方法来获得所需的每行10整数输出吗
private void printKeywordOccurrences(PrintWriter writer) {
for (Map.Entry<String, List<Integer>> entry : keywordMap.entrySet()) {
writer.println(entry.getKey() + " =");
writer.print("[");
List occurrList = entry.getValue();
int lastElement = occurrList.size();
if (!occurrList.isEmpty()) {
for (int i = 0, j = 0; i < (lastElement - 1); i++, j++) {
writer.print(occurrList.get(i));
writer.print(",");
if (j == 10) {
writer.println();
j = 0;
} else {
writer.print(" ");
}
writer.print(occurrList.get(lastElement - 1));
}
writer.println("]\n");
}
}
标准Java库中没有一个。阿法克
我也没有遇到第三方库方法来实现这一点
我认为你目前的方法是最好的。。。编写自己的方法以满足自己的特殊格式要求。使用正则表达式重新格式化字符串对我来说有点太粗糙了…这是可能的,但您尝试了什么?这是一个需要包含在内置函数中的特定问题,您不认为吗?您为什么要反循环?@Sanchit请参阅上面的代码,而不是反循环。只是寻求更高效和不同的做事方式。不同,当然。更有效率/更有效率?我不知道。回答得很好,波希米亚人!关于regex,我有很多要学习的地方。我很感谢您分享您的知识。@Pshemo-thx-没有注意到缺少逗号。我基本上提出了您的正则表达式,除了\s不需要,因为它总是一个空格,而且后面从来没有逗号,所以可选?对于尾随空间,不需要