При выпуске Java 8 наибольшее внимание было уделено Lamda, новому API даты и движку Nashorn Javascript. В тени этого есть небольшие, но также интересные изменения. Среди них введение StringJoiner. StringJoiner — это утилита для разграничения списка символов или строк. Вы можете узнать код ниже:
01
02
03
04
05
06
07
08
09
10
|
String getString(List<String> items) StringBuilder sb = new StringBuilder(); for (String item : items) { if (sb.length != 0 ) { sb.append( "," ); } sb.append(item); } return sb.toString(); } |
Это может быть заменено этими строками в Java 8:
1
2
3
4
5
6
7
|
String getString(List<String> items) { StringJoiner stringJoiner = new StringJoiner( ", " ); for (String item : items) { stringJoiner.add(item); } return stringJoiner.toString(); } |
Если вы уже знаете, как использовать потоки, следующий код уменьшит некоторые устаревшие строки.
1
2
3
4
5
|
String getString(List<String> items) { StringJoiner stringJoiner = new StringJoiner( ", " ); items.stream().forEach(stringJoiner::add); return stringJoiner.toString(); } |
Другим ценным дополнением является установка префикса и суффикса. Они могут быть установлены как второй и третий параметр в конструкторе StringJoiner. Например:
1
2
3
4
5
|
String getString(List<String> items) { StringJoiner stringJoiner = new StringJoiner( ", " , "<<" , ">>" ); items.stream().forEach(stringJoiner::add); return stringJoiner.toString(); } |
Этот код может вернуть, например:
1
|
<<One, Two, Tree, Four>> |
Другой способ создания новой строки из итерируемого — использование метода Join в классе String. Метод Join поддерживает разделитель, но без префикса и суффикса. Вы можете использовать его следующим образом:
1
|
String result = String.join( ", " , "One" , "Two" , "Three" ); |
Результат будет:
1
|
One, Two, Three |
Ссылка: | Java 8 StringJoiner от нашего партнера JCG Сьорда Шунселара в блоге JDriven . |