JavaRush /Java блог /Архив info.javarush /В Java 8 можно объединять строки
theGrass
24 уровень
Саратов

В Java 8 можно объединять строки

Статья из группы Архив info.javarush
Я уверен, что вы были в ситуации, в которой хотели объединять несколько строк. Если вы писали не на Java, то вероятно вы использовали функцию join() предоставленную вам самим языком программирования. Если вы писали на Java, то не могли этого сделать по простой причине — этого метода не было. Стандартная библиотека классов в Java предоставляла вам инструменты для создания приложений с графическим интерфейсом, для доступа к базам данных, для отправки данных по сети, для XML преобразований или для вызова методов сторонних библиотек. Простой метод для соединения коллекции строк не был включен. Для этого вам необходима была одна из множества сторонних библиотек. В Java 8 можно объединять строки - 1К счастью, этому пришел конец! В Java 8 мы, наконец, можем объединять строки! В Java 8 добавлен новый класс, называемый StringJoiner . Как следует из названия, мы можем использовать этот класс, чтобы объединять строки:

StringJoiner joiner = new StringJoiner(",");
joiner.add("foo");
joiner.add("bar");
joiner.add("baz");
String joined = joiner.toString(); // "foo,bar,baz"

// add() calls can be chained
joined = new StringJoiner("-")
.add("foo")
.add("bar")
.add("baz")
.toString(); // "foo-bar-baz"
String использует два новых статических метода join() StringJoiner:

// join(CharSequence delimiter, CharSequence... elements)
String joined = String.join("/", "2014", "10", "28" ); // "2014/10/28"

// join(CharSequence delimiter, Iterable<? extends CharSequence> elements)
List<String> list = Arrays.asList("foo", "bar", "baz");
joined = String.join(";", list); // «foo;bar;baz"
Также, для объединения строк существует специальный Collector в новом API с применением потоков:

List<Person> list = Arrays.asList(
 new Person("John", "Smith"),
 new Person("Anna", "Martinez"),
 new Person("Paul", "Watson ")
);

String joinedFirstNames = list.stream()
 .map(Person::getFirstName)
 .collect(Collectors.joining(", ")); // "John, Anna, Paul»
Таким образом, нам действительно больше не нужны сторонние библиотеки для объединения строк! Оригинал статьи
Комментарии (7)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Deniska Уровень 26
29 ноября 2020
Сомнительное удовольствие, но довольно интересное. Похоже на обратную работа метода split(); объединение строк по разделителю.
super4prikolist1 Уровень 0
29 ноября 2019
"lol"+"kek"???????? не объединение строк?
maks1m Уровень 25
6 июня 2014
А чем StringJoiner лучше старого StringBuilder?