Se lo scopo di questo esempio e domanda è capire come mappare le stringhe a un flusso di int (ad esempio, utilizzando un flusso di int per accedere a un indice in un array di stringhe), puoi anche usare il boxing, quindi eseguire il casting su un int (che consentirebbe quindi di accedere all'indice dell'array).
int[] numbers = {0, 1, 2, 3};
String commaSeparatedNumbers = Arrays.stream(numbers)
.boxed()
.map((Integer i) -> Integer.toString((int)i))
.collect(Collectors.joining(", "));
La chiamata .boxed () converte il tuo IntStream (un flusso di int primitivi) in un flusso (un flusso di oggetti - vale a dire, oggetti Integer) che quindi accetterà il ritorno di un oggetto (in questo caso, un oggetto String) da la tua lambda. Qui è solo una rappresentazione di stringa del numero a scopo dimostrativo, ma potrebbe essere altrettanto facilmente (e più praticamente) qualsiasi oggetto stringa, come l'elemento di un array di stringhe come menzionato prima.
Ho solo pensato di offrire un'altra possibilità. Nella programmazione, ci sono sempre più modi per svolgere un'attività. Conoscerne il maggior numero possibile, quindi scegliere quello che si adatta meglio all'attività da svolgere, tenendo presente i problemi di prestazioni, l'intuitività, la chiarezza del codice, le preferenze nello stile di codifica e la più auto-documentata.
Buona programmazione!
IntStream
eStream<Integer>
?