#java #eclipse #arraylist #tostring
#java #eclipse #arraylist #tostring
Вопрос:
Я спрашиваю, что в Java 8, когда я вызываю свой toString()
метод (переопределенный), я пытаюсь распечатать элементы каждого соответствующего ArrayList<String>
таким образом:
- str1
- str2
- str3
Но вместо этого, когда я возвращаю ArrayList<String>
, он печатается таким образом:
[str1, str2, str3]
Для меня имеет смысл, почему он печатается таким образом, но я не уверен, как бы я изменил способ его отображения в toString()
.
Обратите внимание, что это ArrayList<String>
зависит от размера в зависимости от объекта, от которого он отделен, и я бы предпочел не использовать внешний метод для печати этих элементов таким образом, если только не было другого способа сделать это.
Кроме того, я не думаю, что даже имеет смысл иметь цикл for внутри toString()
распечатки элементов ArrayList<String>
вышеупомянутым способом, и я не думаю, что Java в любом случае позволит это.
Комментарии:
1. вы также можете посмотреть
Collectors.joining
, как создать строковое представление потокового
Ответ №1:
Одним из решений было бы написать пользовательскую List
реализацию для переноса списка и последующего переопределения toString()
. Это кажется довольно излишним. Вместо этого я предлагаю распечатать записи List
с помощью Stream
API:
list.forEach(entry -> System.out.println("- " entry));
С появлением нового метода экземпляра String::formatted
(в настоящее время функция предварительного просмотра) мы могли бы также написать
list.stream()
.map("- %s"::formatted)
.forEach(System.out::println);
(Извините, Ideone demoдля этого нет, Ideone работает на Java 12)
Ответ №2:
Я бы просто создал другой метод, такой как displayArrayPretty(ArrayList arr), где вы перебираете и печатаете, как хотите. Например.
for (String str: arr) {
System.out.println("- " str);
}
Комментарии:
1.
"n"
Приводит к двойным пустым строкам.