在打印列表时,我不喜欢这种布局:它打印成一条长线。我更喜欢line pro元素。
我为此创建了一个版本,但想知道是否可以做得更好。
private static void printObjectList(List<?> objects) {
System.out.println("[");
objects.forEach(o -> System.out.println(" " + o));
System.out.println("]");
}
----编辑
有了Erin的一个很好的技巧,我将方法更改为:
private static void printObjectList(List<?> objects) {
System.out.println(objects.stream()
.map(o -> " " + o)
.collect(Collectors.joining(" \n", "[\n", "\n]")));
}
我只是不了解参数。我希望:
.collect(Collectors.joining("\n ", "[", "\n]")));
----编辑
尚不完全正确,因为:
printObjectList(new ArrayList<Integer>());
给予:
[
]
代替:
[
]
----编辑
可以通过以下方式解决:
private static void printObjectList(List<?> objects) {
if (objects.isEmpty()) {
System.out.println("[\n]");
} else {
System.out.println(objects.stream()
.map(o -> " " + o)
.collect(Collectors.joining("\n", "[\n", "\n]")));
}
}
----编辑
应该多想一会儿。 :'-(我真的不喜欢if。通过重写映射并清空分隔符,不再需要有条件的条件:
private static void printObjectList(List<?> objects) {
System.out.println(objects.stream()
.map(o -> " " + o + "\n")
.collect(Collectors.joining("", "[\n", "]")));
}
答案 0 :(得分:2)
您可以使用Java 8功能来代替编写自己的方法。
例如:
System.out.println(objects.stream().map(o -> " " + o).collect(Collectors.joining (" \n","[\n","\n]\n")));