Если цель этого примера и вопроса - выяснить, как сопоставить строки с потоком целых чисел (например, используя поток целых чисел для доступа к индексу в массиве строк), вы также можете использовать бокс, а затем приведение к int (который затем позволит получить доступ к индексу массива).
int[] numbers = {0, 1, 2, 3};
String commaSeparatedNumbers = Arrays.stream(numbers)
.boxed()
.map((Integer i) -> Integer.toString((int)i))
.collect(Collectors.joining(", "));
Вызов .boxed () преобразует ваш IntStream (поток примитивных целых чисел) в Stream (поток объектов, а именно, объекты Integer), который затем принимает возврат объекта (в данном случае объекта String) из ваша лямбда. Здесь это просто строковое представление числа для демонстрационных целей, но с такой же легкостью (и более практично) им может быть любой строковый объект - например, элемент массива строк, как упоминалось ранее.
Просто подумал, что предлагаю другую возможность. В программировании всегда есть несколько способов выполнить задачу. Узнайте как можно больше, а затем выберите тот, который лучше всего подходит для поставленной задачи, учитывая проблемы производительности, интуитивность, ясность кода, ваши предпочтения в стиле кодирования и наиболее самодокументированный.
Удачного кодирования!
IntStream
иStream<Integer>
?