При печати списка мне не нравится макет: он печатается одной длинной строкой.Я бы предпочел элемент line pro.
Я создал версию для этого, но мне было интересно, можно ли это сделать лучше.
private static void printObjectList(List<?> objects) {
System.out.println("[");
objects.forEach(o -> System.out.println(" " + o));
System.out.println("]");
}
---- Редактировать
С очень хорошим советом Эрин я изменил метод на:
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", "]")));
}