È possibile attivare una matrice in un flusso utilizzando Arrays.stream()
:
int[] ns = new int[] {1,2,3,4,5};
Arrays.stream(ns);
Una volta ottenuto il flusso, è possibile utilizzare uno dei metodi descritti in the documentation, ad esempio sum()
o qualsiasi altra cosa. È possibile map
o filter
come in Python chiamando i metodi flusso rilevanti con una funzione lambda:
Arrays.stream(ns).map(n -> n * 2);
Arrays.stream(ns).filter(n -> n % 4 == 0);
Una volta fatto modificare il flusso, è quindi chiamare toArray()
per riconvertirlo in un array da utilizzare altrove:
int[] ns = new int[] {1,2,3,4,5};
int[] ms = Arrays.stream(ns).map(n -> n * 2).filter(n -> n % 4 == 0).toArray();
fonte
2014-06-24 16:06:26
'int [] result = IntStream.range (0, a.length) .map (I-> a [i] * b [i]) toArray();.' – Holger
@Holger si che funzionerebbe anche. Anche se probabilmente vorrai usare 'mapToInt' per evitare il pugilato. – dkatzel
Questo ultimo equivale a una simulazione di zip in cui è necessario preallocare lo spazio di archiviazione per il risultato. Mi chiedo perché non ci siano zip nella libreria Streams? –