Ho una lista di Integer
list
e dal list.stream()
voglio il valore massimo. Qual è il modo più semplice? Ho bisogno di un comparatore?come trovare il valore massimo da un intero utilizzando lo stream in java 8?
risposta
Si può o convertire il flusso di IntStream
:
OptionalInt max = list.stream().mapToInt(Integer::intValue).max();
o specificare il comparatore ordine naturale:
Optional<Integer> max = list.stream().max(Comparator.naturalOrder());
Oppure utilizzare ridurre operazione:
Optional<Integer> max = list.stream().reduce(Integer::max);
Oppure utilizzare collector:
Optional<Integer> max = list.stream().collect(Collectors.maxBy(Comparator.naturalOrder()));
o utilizzare IntSummaryStatistics:
int max = list.stream().collect(Collectors.summarizingInt(Integer::intValue)).getMax();
int max = list.stream().reduce(Integer.MIN_VALUE, (a, b) -> Integer.max(a, b));
Funziona solo se tutti i valori sono positivi. Utilizzare Integer.MIN_VALUE anziché 0 in reduce(). – rolika
Un'altra versione potrebbe essere:
int maxUsingCollectorsReduce = list.stream().collect(Collectors.reducing(Integer::max)).get();
codice corretto:
int max = list.stream().reduce(Integer.MIN_VALUE, (a, b) -> Integer.max(a, b));
o
int max = list.stream().reduce(Integer.MIN_VALUE, Integer::max);
È possibile utilizzare int max = Stream.of (1,2,3,4,5) .reduce (0, (a, b) -> Math.max (a, b)); funziona sia per numeri positivi che negativi
Non funziona per il negativo. – shmosel
- 1. Regex: come trovare il valore intero massimo di un pattern?
- 2. Come trovare il valore massimo del tipo intero sconosciuto
- 3. Java 8: trovare l'indice del valore minimo da un elenco
- 4. In SQL come ottengo il valore massimo per un intero?
- 5. Sostituire il testo in un file utilizzando Stream- Java 8
- 6. Java 8 stream in cortocircuito
- 7. Java 8 stream, lambda
- 8. Trovare il valore massimo massimo di scrollTop su un div?
- 9. Multithreading Java 8 Stream
- 10. Java 8 Stream - .max() con i duplicati
- 11. Creazione di Java 8 Stream da ArrayNode
- 12. Come conservare la nuova riga durante la lettura di un file utilizzando lo stream - java 8
- 13. API Java 8 Stream in Android N
- 14. Come confrontare due stream in Java 8
- 15. Trovare il valore minimo del cluster massimo?
- 16. C'è un approccio Java 8 Stream più efficiente per trovare l'indice in un [] int?
- 17. Come aggiungere due stream in Java 8?
- 18. Perché lo stream parallelo viene raccolto sequenzialmente in Java 8
- 19. Qual è il valore intero massimo in Flex?
- 20. Java 8 modifica elementi stream
- 21. Come trovare il valore massimo per ogni chiave in un elenco di dizionari utilizzando LINQ?
- 22. Java 8 Stream per trovare elemento della lista
- 23. Come trovare l'ultima occorrenza del valore massimo in un numpy.ndarray
- 24. Come creare una mappa con Java stream API utilizzando un valore esterno allo stream?
- 25. Java 8 Stream con elaborazione in batch
- 26. Come moltiplicare i valori in un elenco utilizzando java 8 stream
- 27. Come impostare il massimo schermo intero in vmware?
- 28. Come trovare il valore massimo nella coppia RDD?
- 29. Come trovare il punteggio minimo di ciascun utente da un elenco di mappe utilizzando Java 8 flusso
- 30. Gestione di un attributo null utilizzando java 8 stream e ordinamento utilizzando espressioni lambda
Leggi javadoc: http://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html#max-java.util.Comparator -, http://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html#naturalOrder-- –
Potresti avere i tuoi motivi per usare uno Stream, ma non dimenticare 'Collections. max' .. –