Verwenden Sie dieses Tag für Fragen zur Verwendung der Stream-API. Es wurde in Java 8 eingeführt und unterstützt funktionale Operationen für Werteströme, z. B. Pipelines zum Reduzieren von Filterkarten in Sammlungen.
In Java 8 haben wir die Klasse Stream <T> , die seltsamerweise eine Methode hat Iterator<T> iterator() Sie würden also erwarten, dass die Schnittstelle Iterable <T> implementiert wird , was genau diese Methode erfordert, aber das ist nicht der Fall. Wenn ich mit einer foreach-Schleife über einen Stream iterieren möchte, …
Ich würde gerne verwenden java.util.Optional.orElseThrow() mit einem Ausnahmetyp, der nach einem Konstruktorparameter fragt. Etwas wie das: .orElseThrow(MyException::new(someArgument)) // obviously NOT working Gibt es eine Möglichkeit, einen Lieferanten zu erstellen, der meinen Argumentwert übergibt?
Map<String, String> phoneBook = people.stream() .collect(toMap(Person::getName, Person::getAddress)); Ich bekomme, java.lang.IllegalStateException: Duplicate keywenn ein dupliziertes Element gefunden wird. Ist es möglich, eine solche Ausnahme beim Hinzufügen von Werten zur Karte zu ignorieren? Wenn es ein Duplikat gibt, sollte es einfach fortgesetzt werden, indem dieser doppelte Schlüssel ignoriert wird.
Ich frage mich, warum die IterableSchnittstelle die stream()und parallelStream()Methoden nicht bereitstellt . Betrachten Sie die folgende Klasse: 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(); } } Es ist eine Implementierung einer Hand, …
Overа этот вопрос есть ответы на Stapelüberlauf на русском : Лямбды в Java 8, что лучше использовать - Function.identity () или t-> t? Ich habe eine Frage zur Verwendung der Function.identity()Methode. Stellen Sie sich den folgenden Code vor: Arrays.asList("a", "b", "c") .stream() .map(Function.identity()) // <- This, .map(str -> str) // …
Im Gegensatz zu C # IEnumerable, bei denen eine Ausführungspipeline so oft ausgeführt werden kann, wie wir möchten, kann ein Stream in Java nur einmal "iteriert" werden. Jeder Aufruf einer Terminaloperation schließt den Stream und macht ihn unbrauchbar. Diese 'Funktion' nimmt viel Energie weg. Ich stelle mir vor, der Grund …
Das neue Java 8-Stream-Framework und seine Freunde sorgen für einen sehr präzisen Java-Code, aber ich bin auf eine scheinbar einfache Situation gestoßen, die schwierig zu formulieren ist. Betrachten Sie eine List<Thing> thingsund Methode Optional<Other> resolve(Thing thing). Ich möchte das Things auf Optional<Other>s abbilden und das erste bekommen Other. Die naheliegende …
Manchmal möchten Sie a Streammit mehr als einer Bedingung filtern : myList.stream().filter(x -> x.size() > 10).filter(x -> x.isCool()) ... oder Sie könnten dasselbe mit einer komplexen Bedingung und einer einzigen tun filter: myList.stream().filter(x -> x.size() > 10 && x -> x.isCool()) ... Ich vermute, dass der zweite Ansatz bessere Leistungseigenschaften …
Ich versuche Java 8 Streams zu verwenden, um Elemente in a zu finden LinkedList. Ich möchte jedoch garantieren, dass es nur eine Übereinstimmung mit den Filterkriterien gibt. Nehmen Sie diesen Code: 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, …
Hinweis: Diese Frage stammt von einem toten Link, der eine vorherige SO-Frage war, aber hier geht ... Siehe diesen Code ( Hinweis: Ich weiß, dass dieser Code nicht "funktioniert" und Integer::compareverwendet werden sollte - ich habe ihn gerade aus der verknüpften Frage extrahiert ): final ArrayList <Integer> list = IntStream.rangeClosed(1, …
Ich weiß, wie man ein einfaches Java Listvon Y-> "transformiert" Z, dh: List<String> x; List<Integer> y = x.stream() .map(s -> Integer.parseInt(s)) .collect(Collectors.toList()); Jetzt möchte ich im Grunde dasselbe mit einer Karte machen, dh: INPUT: { "key1" -> "41", // "41" and "42" "key2" -> "42 // are Strings } OUTPUT: …
In Java 8 gibt es viele nützliche neue Dinge. Beispielsweise kann ich mit einem Stream über eine Liste von Objekten iterieren und dann die Werte aus einem bestimmten Feld der ObjectInstanzen der Instanzen summieren . Z.B public class AClass { private int value; public int getValue() { return value; } …
Ich habe gerade die neuen Java 8-Stream-Funktionen entdeckt. Als ich aus Python kam, fragte ich mich, ob es jetzt eine gute Möglichkeit gibt, Operationen an Arrays wie Summieren durchzuführen und zwei Arrays auf eine "einzeilige pythonische" Weise zu multiplizieren. Vielen Dank
Ich habe eine Liste, myListToParsein der ich die Elemente filtern, eine Methode auf jedes Element anwenden und das Ergebnis in eine andere Liste einfügen möchte myFinalList. Mit Java 8 habe ich festgestellt, dass ich das auf zwei verschiedene Arten tun kann. Ich möchte den effizienteren Weg zwischen ihnen kennen und …
Gibt es eine Java 8-Stream-Operation, die a (möglicherweise unendlich) begrenzt, Streambis das erste Element nicht mehr mit einem Prädikat übereinstimmt? In Java 9 können wir takeWhilewie im folgenden Beispiel alle Zahlen unter 10 drucken. IntStream .iterate(1, n -> n + 1) .takeWhile(n -> n < 10) .forEach(System.out::println); Da es in …
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.