Ho praticato java 8 stream e lo stile funzionale per un po '. A volte provo a risolvere alcuni enigmi di programmazione usando solo i flussi. E durante questo periodo ho trovato una classe di compiti che non so come risolvere con i flussi, solo con un approccio classico.Stile funzionale Java 8 per iterare con gli indici
Un esempio di questo tipo di attività è: Dato un array di numeri, trovare l'indice dell'elemento che farà la somma della parte sinistra della matrice sotto zero. ad es. per array [1, 2, 3, -1, 3, -10, 9]
la risposta sarà 5
La mia prima idea era quella di usare IntStream.generate(0, arr.length)...
ma poi non so come accumulare valori e di essere consapevole dell'indice stesso tempo.
Così domande sono:
- E 'possibile accumulare in qualche modo il valore sul torrente e poi fare uscire condizionale?
- Che cos'è allora con l'esecuzione parallela? non è corretto il problema di trovare indici in cui è necessario essere a conoscenza dell'ordine degli elementi.
Difficilmente possibile con l'API del flusso poiché questo problema richiede il monitoraggio dello stato non locale (somma di tutti gli elementi del prefisso) anch'esso associato all'ordine dell'elemento. Stream API è progettato per rendere l'elaborazione parallela semplice come sequenziale, ma questo tipo di operazioni è sequenziale per natura ... –
Eventuale duplicato di http://stackoverflow.com/questions/22789413/what-are-the-reasons-for -non-avere-un-indice-in-java-8-flussi e http://stackoverflow.com/questions/28989841/how-to-map-elements-of-the-list-to-their-indices-using 8-stream -java-. –