Преобразование списка в строку в Java
1. Вступление
В этой быстрой статье мы рассмотрим, как преобразоватьList элементов вString. Это может быть полезно в определенных сценариях, таких как печать содержимого на консоли в удобочитаемой форме для проверки / отладки.
2. СтандартныйtoString() наList
Один из самых простых способов - просто вызвать методtoString() дляList:
@Test
public void whenListToString_thenPrintDefault() {
List intLIst = Arrays.asList(1, 2, 3);
System.out.println(intLIst);
}
Выход:
[1, 2, 3]
Этот метод внутренне использует методtoString() типа элементов в пределахList. В нашем случае мы используем типInteger, который имеет правильную реализацию методаtoString().
Если мы используем наш собственный тип, скажем,Person, то нам нужно убедиться, что классPerson переопределяет методtoString() и не полагается на реализацию по умолчанию. Если методtoString() не реализован должным образом, вы можете получить неожиданные результаты:
[[email protected],
[email protected],
[email protected]]
3. Индивидуальная реализация с использованиемCollectors
Часто нам может потребоваться отобразить вывод в другом формате.
По сравнению с предыдущим примером, давайте заменим запятую (,) дефисом (-), а квадратные скобки ([,]) - набором фигурных скобок (\ {,}):
@Test
public void whenCollectorsJoining_thenPrintCustom() {
List intList = Arrays.asList(1, 2, 3);
String result = intList.stream()
.map(n -> String.valueOf(n))
.collect(Collectors.joining("-", "{", "}"));
System.out.println(result);
}
Выход:
{1-2-3}
Для методаCollectors.joining() требуетсяCharSequence, поэтому нам нужноmap отInteger доString. Та же идея может быть использована в случае любого другого класса, даже если у нас нет доступа к коду этого класса.
4. Использование внешней библиотеки
Теперь мы увидим использование классаStringUtils Apache Commons для достижения аналогичных результатов.
4.1. Maven Dependency
org.apache.commons
commons-lang3
3.6
Последнюю версию зависимости можно найтиhere.
4.2. Реализация
Реализация - это буквально единственный вызов метода:
@Test
public void whenStringUtilsJoin_thenPrintCustom() {
List intList = Arrays.asList(1, 2, 3);
System.out.println(StringUtils.join(intList, "|"));
}
Выход:
1|2|3
Опять же, эта реализация внутренне зависит от реализацииtoString() рассматриваемого нами типа.
5. Заключение
В этой статье мы увидели, как легко преобразоватьList вString, используя разные методы.
Как всегда, полный исходный код этой статьи можно найти наover on GitHub.