Статьи

Java может наконец соединить строки

Я уверен, что вы оказались в ситуации, когда вы хотели объединить несколько строк. Если вы использовали язык программирования, отличный от Java, вы, вероятно, использовали функцию join (), предоставляемую языком программирования. Если бы вы использовали Java, вы бы не смогли этого сделать. Не было метода join (). Стандартная библиотека классов Java предоставила вам инструменты для создания приложений с графическим интерфейсом, доступа к базам данных, отправки данных по сети, выполнения преобразований XML или вызова удаленных методов. Простой способ присоединения к коллекции строк не был включен. Для этого вам понадобилась одна из различных сторонних библиотек .

К счастью, это время прошло! В Java 8 мы наконец можем присоединиться к Strings!

Java 8 добавила новый класс под названием StringJoiner . Как следует из названия, мы можем использовать этот класс для объединения строк:

01
02
03
04
05
06
07
08
09
10
11
12
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"

StringJoiner используется внутренне двумя новыми статическими методами соединения () String:

1
2
3
4
5
6
// 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 для нового Stream API:

1
2
3
4
5
6
7
8
9
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"

Таким образом, нам больше не нужны сторонние библиотеки для объединения строк!