Редактировать: не использовать потоки для этого
Мне нужно сохранить строку, когда я делю разделение. Он должен выглядеть как исходный список со списком 1 «Записи», «являются». Список 2 будет "три", "до". Список 3 будет "десять", "символы" и т. Д.
Потоковые операции не подходят для вашей задачи. Я рекомендую использовать классический l oop для самого понятного и простого в обслуживании кода.
Оригинальный ответ: Intstream.range ()
Не уверен, что это действительно то, что вам нужно. Если вы предпочитаете использовать поток, вот моя попытка:
final int maxSubstringLength = 9; // 8100
List<String> entries = List.of("Entries", "are", "three", "upto", "ten", "chars", "each");
String totalString = entries.stream().collect(Collectors.joining(","));
// round up in the division
int substringCount = (totalString.length() + maxSubstringLength - 1) / maxSubstringLength;
List<String> substrings = IntStream.range(0, substringCount)
.mapToObj(i -> totalString.substring(i * maxSubstringLength, Math.min((i + 1) * maxSubstringLength, totalString.length())))
.collect(Collectors.toList());
substrings.forEach(System.out::println);
Вывод:
Entries,a
re,three,
upto,ten,
chars,eac
h
Для вашей очень длинной строки просто поставьте 8100 как максимальная длина подстроки, где я положил 9 для демонстрации.