Когда требуется конкатенировать строки с использованием Stream
, можно выбрать один из двух методов: Stream.reduce()
или Stream.collect(Collectors.joining())
.
Пример с Stream.reduce()
:
List<String> list = List.of("Str1", "Str2", "Str3");
String result = list.stream().reduce("", (a, b) -> a + b);
System.out.println(result); // Str1Str2Str3
Пример с
Collectors.joining()
: List<String> list = List.of("Str1", "Str2", "Str3");
String result = list.stream().collect(Collectors.joining());
System.out.println(result); // Str1Str2Str3
Использование
reduce()
для конкатенации строк не является оптимальным с точки зрения производительности. При каждом вызове операции +
, создается новая строка, так как строки в Java неизменяемы. Это приводит к увеличению нагрузки на память из-за создания множества промежуточных объектов.В свою очередь, метод
Collectors.joining()
использует StringBuilder
для сборки строк, что значительно эффективнее. Он избегает создания лишних объектов и снижает потребление памяти.