При выпуске 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 . |