Usa questo tag per domande relative all'uso dell'API Stream. È stato introdotto in Java 8 e supporta operazioni in stile funzionale su flussi di valori, come pipeline di filtro-riduzione mappa su raccolte.
In Java 8 abbiamo la classe Stream <T> , che curiosamente ha un metodo Iterator<T> iterator() Quindi ti aspetteresti che implementa l'interfaccia Iterable <T> , che richiede esattamente questo metodo, ma non è così. Quando voglio iterare su uno Stream usando un ciclo foreach, devo fare qualcosa del genere public …
Mi piacerebbe usare java.util.Optional.orElseThrow() con un tipo di eccezione che richiede un parametro costruttore. Qualcosa come questo: .orElseThrow(MyException::new(someArgument)) // obviously NOT working C'è un modo per creare un fornitore che trasmetta il valore del mio argomento?
Map<String, String> phoneBook = people.stream() .collect(toMap(Person::getName, Person::getAddress)); Ottengo java.lang.IllegalStateException: Duplicate keyquando viene trovato un elemento duplicato. È possibile ignorare tale eccezione quando si aggiungono valori alla mappa? Quando c'è un duplicato, semplicemente dovrebbe continuare ignorando quella chiave duplicata.
Mi chiedo perché l' Iterableinterfaccia non fornisca i metodi stream()e parallelStream(). Considera la seguente classe: public class Hand implements Iterable<Card> { private final List<Card> list = new ArrayList<>(); private final int capacity; //... @Override public Iterator<Card> iterator() { return list.iterator(); } } È un'implementazione di una mano in quanto puoi …
Il nuovo framework e gli amici del flusso Java 8 creano un codice java molto conciso, ma mi sono imbattuto in una situazione apparentemente semplice che è difficile da fare in modo conciso. Considera un List<Thing> thingse metodo Optional<Other> resolve(Thing thing). Voglio mappare le Things su se Optional<Other>ottenere il primo …
A differenza di C # IEnumerable, in cui una pipeline di esecuzione può essere eseguita tutte le volte che vogliamo, in Java un flusso può essere "ripetuto" solo una volta. Qualsiasi chiamata a un'operazione terminale chiude il flusso, rendendolo inutilizzabile. Questa "caratteristica" toglie molta potenza. Immagino che la ragione di …
A volte vuoi filtrare un Streamcon più di una condizione: myList.stream().filter(x -> x.size() > 10).filter(x -> x.isCool()) ... oppure potresti fare lo stesso con una condizione complessa e una singola filter : myList.stream().filter(x -> x.size() > 10 && x -> x.isCool()) ... La mia ipotesi è che il secondo approccio …
Sto cercando di usare Java 8 Streams per trovare elementi in a LinkedList. Voglio garantire, tuttavia, che esiste una e una sola corrispondenza ai criteri di filtro. Prendi questo codice: public static void main(String[] args) { LinkedList<User> users = new LinkedList<>(); users.add(new User(1, "User1")); users.add(new User(2, "User2")); users.add(new User(3, "User3")); …
Nota: questa domanda proviene da un link non attivo che era una precedente domanda SO, ma qui va ... Vedi questo codice ( nota: so che questo codice non "funzionerà" e che Integer::comparedovrebbe essere usato - l'ho appena estratto dalla domanda collegata ): final ArrayList <Integer> list = IntStream.rangeClosed(1, 20).boxed().collect(Collectors.toList()); …
So come "trasformare" un semplice Java Listda Y-> Z, ovvero: List<String> x; List<Integer> y = x.stream() .map(s -> Integer.parseInt(s)) .collect(Collectors.toList()); Ora vorrei fare sostanzialmente lo stesso con una mappa, vale a dire: INPUT: { "key1" -> "41", // "41" and "42" "key2" -> "42 // are Strings } OUTPUT: { …
Ci sono molte nuove cose utili in Java 8. Ad esempio, posso iterare con un flusso su un elenco di oggetti e quindi sommare i valori da un campo specifico delle Objectistanze di. Per esempio public class AClass { private int value; public int getValue() { return value; } } …
Ho appena scoperto le nuove funzionalità del flusso Java 8. Provenendo da Python, mi chiedevo se ora ci fosse un modo pulito per eseguire operazioni su array come il summing, moltiplicando due array in modo "una linea pitonica"? Grazie
Ho un elenco in myListToParsecui voglio filtrare gli elementi e applicare un metodo su ciascun elemento e aggiungere il risultato in un altro elenco myFinalList. Con Java 8 ho notato che posso farlo in 2 modi diversi. Vorrei sapere il modo più efficiente tra loro e capire perché un modo …
Esiste un'operazione di flusso Java 8 che limita un (potenzialmente infinito) Stream fino a quando il primo elemento non riesce a corrispondere a un predicato? In Java 9 possiamo usare takeWhilecome nell'esempio seguente per stampare tutti i numeri meno di 10. IntStream .iterate(1, n -> n + 1) .takeWhile(n -> …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.