Статьи

Java 8 StringJoiner

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