Универсальная функция для печати списка объектов - PullRequest
0 голосов
/ 11 июля 2019

При печати списка мне не нравится макет: он печатается одной длинной строкой.Я бы предпочел элемент 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", "]")));
}

1 Ответ

2 голосов
/ 11 июля 2019

Вместо написания собственного метода вы можете использовать функции Java 8.

Например:

System.out.println(objects.stream().map(o -> "    " + o).collect(Collectors.joining ("   \n","[\n","\n]\n")));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...