Преобразование списка в строку в Java

Преобразование списка в строку в 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.