Найти тему
DEBAGanov

Java 460. В чем разница между Java 8 StringJoiner, String.join() и Collectors.joining()?

StringJoiner, String.join() и Collectors.joining() - все они используются для объединения строк в единую строку, но имеют некоторые отличия в использовании:

  • StringJoiner - это класс, который был добавлен в Java 8 и позволяет объединять строки с помощью определенного разделителя. Он предоставляет методы для добавления элементов и настройки разделителя и префикса/суффикса. Этот класс удобно использовать для объединения коллекций строк с определенным разделителем. Пример использования StringJoiner:
StringJoiner joiner = new StringJoiner(", ");
// создаем объект StringJoiner с разделителем ", "
joiner.add("one"); // добавляем элемент "one"
joiner.add("two"); // добавляем элемент "two"
joiner.add("three"); // добавляем элемент "three"
String result = joiner.toString(); // получаем результирующую строку, содержащую все добавленные элементы, разделенные запятой и пробелом

В этом примере мы создаем объект StringJoiner с разделителем ", ". Затем мы добавляем три элемента - "one", "two" и "three". Наконец, мы получаем результирующую строку, вызывая метод toString() объекта StringJoiner. Результат будет строка "one, two, three".

  • String.join() - это статический метод, который также был добавлен в Java 8 и позволяет объединить несколько строк с помощью определенного разделителя. Он принимает массив строк или коллекцию строк и разделитель. Этот метод удобно использовать для объединения произвольных наборов строк. Пример использования String.join():
String[] strings = {"one", "two", "three"};
String result = String.join(", ", strings);
// получаем результирующую строку, содержащую все элементы массива строк, разделенные запятой и пробелом

В этом примере мы создаем массив строк strings, содержащий три элемента. Затем мы вызываем метод String.join(), передавая ему массив строк и разделитель ", ". Наконец, мы получаем результирующую строку.

  • Collectors.joining() - это метод, предоставляемый классом Collectors. Он используется для объединения элементов потока с помощью заданного разделителя, префикса и суффикса. Этот метод удобно использовать для объединения элементов коллекции Java в единую строку. Пример использования Collectors.joining():
List<String> list = Arrays.asList("one", "two", "three");
String result = list.stream().collect(Collectors.joining(", ", "{", "}"));
// получаем результирующую строку, содержащую все элементы списка, разделенные запятой и пробелом, с префиксом "{" и суффиксом "}"

В этом примере мы создаем список строк list, содержащий три элемента. Затем мы преобразуем его в поток и вызываем метод Collectors.joining(), передавая ему разделитель ", ", префикс "{" и суффикс "}". Наконец, мы получаем результирующую строку.

Итак, StringJoiner и String.join() удобно использовать для объединения строк, а Collectors.joining() - для объединения элементов коллекции. Разница заключается также в том, что StringJoiner и String.join() позволяют добавлять элементы по одному.

1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions

Tелеграмм канал: https://t.me/DEBAGanov

Мое резюме: https://github.com/DEBAGanov