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.
Ho un file di grandi dimensioni che contiene un elenco di elementi. Vorrei creare un batch di elementi, effettuare una richiesta HTTP con questo batch (tutti gli elementi sono necessari come parametri nella richiesta HTTP). Posso farlo molto facilmente con un forciclo, ma come amante di Java 8, voglio provare …
Come posso verificare se a Streamè vuoto e lanciare un'eccezione in caso contrario, come operazione non terminale? Fondamentalmente, sto cercando qualcosa di equivalente al codice seguente, ma senza materializzare il flusso intermedio. In particolare, il controllo non dovrebbe avvenire prima che il flusso venga effettivamente consumato da un'operazione del terminale. …
Mi interessa ordinare un elenco da uno stream. Questo è il codice che sto usando: list.stream() .sorted((o1, o2)->o1.getItem().getValue().compareTo(o2.getItem().getValue())) .collect(Collectors.toList()); Mi sto perdendo qualcosa? L'elenco non è in ordine. Dovrebbe ordinare gli elenchi in base all'elemento con il valore più basso. for (int i = 0; i < list.size(); i++) { …
Questo codice funziona (preso in Javadoc): List<Integer> numbers = Arrays.asList(1, 2, 3, 4); String commaSeparatedNumbers = numbers.stream() .map(i -> i.toString()) .collect(Collectors.joining(", ")); Questo non può essere compilato: int[] numbers = {1, 2, 3, 4}; String commaSeparatedNumbers = Arrays.stream(numbers) .map((Integer i) -> i.toString()) .collect(Collectors.joining(", ")); IDEA mi dice che ho una …
Ho il seguente codice di ricerca in Java: return getTableViewController().getMe().getColumns().stream().filter($->Database.equalsColumnName($.getId(), columnId)).findFirst().get(); Volevo trovare una colonna per nome e restituire la prima trovata. Capisco che c'è un caso in cui non è stato trovato nulla e dovrebbe essere elaborato, ma come? È questo ciò che vuole da questo giuramento: 'Optional.get()' without …
Dato un elenco di elementi, voglio ottenere l'elemento con una determinata proprietà e rimuoverlo dall'elenco. La migliore soluzione che ho trovato è: ProducerDTO p = producersProcedureActive .stream() .filter(producer -> producer.getPod().equals(pod)) .findFirst() .get(); producersProcedureActive.remove(p); È possibile combinare get e remove in un'espressione lambda?
На этот вопрос есть ответы на Stack Overflow на русском : Какие различия между findFirst и findAny in Java 8? Sto po 'confuso tra la Stream#findAny()e Stream#findFirst()della StreamAPI in Java 8. Quello che ho capito è che entrambi restituiranno il primo elemento corrispondente dallo stream, ad esempio, se usati insieme …
Perché questo genera un java.lang.NullPointerException? List<String> strings = new ArrayList<>(); strings.add(null); strings.add("test"); String firstString = strings.stream() .findFirst() // Exception thrown here .orElse("StringWhenListIsEmpty"); //.orElse(null); // Changing the `orElse()` to avoid ambiguity Il primo elemento stringsè null, che è un valore perfettamente accettabile. Inoltre, findFirst()restituisce un Optional , che ha ancora più …
Ho letto questo post qui. Ma ancora non riesco a eseguire codice contenente le funzionalità API Java 8 Stream come le seguenti su minSdkVersion <24. List<Car> newCars = cars.stream() .filter(s -> s.getColor().equals("red")) .collect(Collectors.toList()); Non viene eseguito a causa del messaggio di errore La chiamata richiede il livello API 24 (il …
Ciao amici sviluppatori Java, So che l'argomento potrebbe essere un po 'in in advancequanto il JDK8 non è ancora stato rilasciato (e non per ora comunque ..) ma stavo leggendo alcuni articoli sulle espressioni Lambda e in particolare sulla parte relativa alla nuova API di raccolta nota come Stream. Ecco …
Sto cercando di elencare elementi duplicati nell'elenco di numeri interi, ad esempio, List<Integer> numbers = Arrays.asList(new Integer[]{1,2,1,3,4,4}); utilizzando Streams di jdk 8. Qualcuno ha provato. Per rimuovere i duplicati possiamo usare l'api distinte (). Ma per quanto riguarda la ricerca degli elementi duplicati? Qualcuno mi può aiutare?
Capisco che questi metodi differiscono nell'ordine di esecuzione ma in tutti i miei test non riesco a ottenere una diversa esecuzione degli ordini. Esempio: System.out.println("forEach Demo"); Stream.of("AAA","BBB","CCC").forEach(s->System.out.println("Output:"+s)); System.out.println("forEachOrdered Demo"); Stream.of("AAA","BBB","CCC").forEachOrdered(s->System.out.println("Output:"+s)); Produzione: forEach Demo Output:AAA Output:BBB Output:CCC forEachOrdered Demo Output:AAA Output:BBB Output:CCC Fornisci esempi quando 2 metodi produrranno output diversi.
Mi sono imbattuto in una strana situazione in cui l'utilizzo di un flusso parallelo con un lambda in un inizializzatore statico richiede apparentemente per sempre senza l'utilizzo della CPU. Ecco il codice: class Deadlock { static { IntStream.range(0, 10000).parallel().map(i -> i).count(); System.out.println("done"); } public static void main(final String[] args) {} …
Sono stato controllando il prossimo Java update, vale a dire: Java 8 or JDK 8. Sì, sono impaziente, ci sono molte cose nuove, ma c'è qualcosa che non capisco, un semplice codice: final Stream<Integer>stream = Stream.of(1,2,3,4,5,6,7,8,9,10); stream.flatMap(); i javadoc sono public <R> Stream<R> flatMap(Function<? super T,? extends Stream<? extends R>> …
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.