Java. Объединение строк



Для соединения строк:


 String.join


 Класс StringJoiner


 Collectors.joining 



 String.join

В Java8 добавили метод join для соединения строк с заданным разделителем.


Тут разделитель пробел:


String joinedString = String.join(" ","My","name","is","Victor");

System.out.println(joinedString);

Вывод:

My name is Victor

Также можно объединять данные в строковых коллекциях:

List<String> userNames = Arrays.asList("Ivanov" ,

 "Petrov", "Sidoriv");

System.out.println(String.join(", ", userNames));

Вывод:

Ivanov, Petrov, Sidoriv


Класс StringJoiner


Класс служит для объединения строк с заданным разделителем.

Можно делать так:

StringJoiner joinerNames = new StringJoiner(", ");

joinerNames.add("Ivanov");

joinerNames.add("Petrov");

joinerNames.add("Sidorov");

System.out.println(joinerNames.toString());

Вывод:

Ivanov, Petrov, Sidorov


Можно сделать короче запись:

StringJoiner joinerNames = new StringJoiner(", ")

.add("Ivanov")

.add("Petrov")

.add("Sidorov");

System.out.println(joinerNames.toString());

Вывод:

Ivanov, Petrov, Sidorov

Можно задавать в конструкторе StringJoiner начало и конец строки

(в данном случае "{" и "}" ):


StringJoiner joinerNames = new StringJoiner(", ", "{", "}")

.add("Ivanov")

.add("Petrov")

.add("Sidorov");

System.out.println(joinerNames.toString());

Вывод:

{Ivanov, Petrov, Sidorov}


merge - объединяем два StringJoiner 

StringJoiner joinerNames = new StringJoiner(", ", "{", "}")

.add("Ivanov")

.add("Petrov")

.add("Sidorov");



StringJoiner joinerNames2 = new StringJoiner("_")

        .add("Ivanov2")

        .add("Petrov2")

        .add("Sidorov2");

System.out.println(joinerNames.merge(joinerNames2));

Вывод на консоль:

{Ivanov, Petrov, Sidorov, Ivanov2_Petrov2_Sidorov2}

length - длина StringJoiner 

System.out.println(joinerNames.merge(joinerNames2).length()); //51

setEmptyValue - устанавливает значение если StringJoiner пустой

StringJoiner joinerNames = new StringJoiner(", ", "{", "}");

joinerNames.setEmptyValue("Empty");

System.out.println(joinerNames); // Empty


Collectors.joining - для SteramAPI


3.1)Просто объединяем строки без разделителей

String names = users.stream().map(User::getUserName).collect(Collectors.joining());

System.out.println(names);

Вывод:

IvanAlexMaxTomRichardDonald

3.2)Просто объединяем строки с разделителем (в данном случае ",")

String names = users.stream().map(User::getUserName).collect(Collectors.joining(","));

System.out.println(names);

Вывод:

Ivan,Alex,Max,Tom,Richard,Donald

3.3)Просто объединяем строки с разделителем ",", а также добавляем начало и 

конец строки


String names = users.stream().map(User::getUserName)

        .collect(Collectors.joining(",", "{", "}"));

System.out.println(names);

Вывод:

{Ivan,Alex,Max,Tom,Richard,Donald}

Комментарии

Популярные сообщения из этого блога

Java. Лучшая практика работы с Enum

Java. Разбор класса Collections

Java. Порядок инициализации полей и блоков класса и Интерфейсов