Pytania otagowane jako java-stream

Użyj tego tagu w przypadku pytań związanych z korzystaniem z interfejsu API Stream. Został wprowadzony w Javie 8 i obsługuje operacje w stylu funkcjonalnym na strumieniach wartości, takich jak potoki filtruj-mapuj-zmniejszaj w kolekcjach.

9
Dlaczego Stream <T> nie implementuje Iterable <T>?
W Javie 8 mamy klasę Stream &lt;T&gt; , która, co ciekawe, ma metodę Iterator&lt;T&gt; iterator() Można się więc spodziewać, że zaimplementuje interfejs Iterable &lt;T&gt; , który wymaga dokładnie tej metody, ale tak nie jest. Kiedy chcę iterować po strumieniu za pomocą pętli foreach, muszę zrobić coś takiego public static Iterable&lt;T&gt; …


7
Ignoruj ​​duplikaty podczas tworzenia mapy za pomocą strumieni
Map&lt;String, String&gt; phoneBook = people.stream() .collect(toMap(Person::getName, Person::getAddress)); Dostaję się, java.lang.IllegalStateException: Duplicate keygdy zostanie znaleziony zduplikowany element. Czy można zignorować taki wyjątek podczas dodawania wartości do mapy? W przypadku duplikatu należy po prostu kontynuować ignorowanie tego duplikatu klucza.
257 java  java-8  java-stream 

3
Dlaczego Iterable <T> nie zapewnia metod stream () i parallelStream ()?
Zastanawiam się, dlaczego Iterableinterfejs nie zapewnia metod stream()i parallelStream(). Rozważ następującą klasę: public class Hand implements Iterable&lt;Card&gt; { private final List&lt;Card&gt; list = new ArrayList&lt;&gt;(); private final int capacity; //... @Override public Iterator&lt;Card&gt; iterator() { return list.iterator(); } } Jest to realizacja ręku jak można mieć karty w ręku podczas …

3
Java 8 lambdas, Function.identity () lub t-> t
Czy masz dostęp do stosu w przepełnieniu stosu w środowisku : Java w wersji 8, w języku angielskim - Function.identity () или t-&gt; t? Mam pytanie dotyczące zastosowania Function.identity()metody. Wyobraź sobie następujący kod: Arrays.asList("a", "b", "c") .stream() .map(Function.identity()) // &lt;- This, .map(str -&gt; str) // &lt;- is the same as …

12
Opcjonalne używanie Java 8 z Stream :: flatMap
Nowa struktura strumieniowa Java 8 i znajomi tworzą bardzo zwięzły kod java, ale natknąłem się na pozornie prostą sytuację, której wykonanie jest trudne. Zastanów się nad List&lt;Thing&gt; thingsmetodą i Optional&lt;Other&gt; resolve(Thing thing). Chcę zmapować Things do Optional&lt;Other&gt;s i uzyskać pierwszy Other. Oczywistym rozwiązaniem byłoby użycie things.stream().flatMap(this::resolve).findFirst(), ale flatMapwymaga zwrotu strumienia …

5
Dlaczego strumienie Java są jednorazowe?
W przeciwieństwie do C # IEnumerable, gdzie potok wykonania może być wykonywany tyle razy, ile chcemy, w Javie strumień można „iterować” tylko raz. Każde wywołanie operacji terminalowej zamyka strumień, co czyni go bezużytecznym. Ta „funkcja” zabiera dużo energii. Wyobrażam sobie, że powód tego nie jest techniczny. Jakie były uwagi projektowe …

4
Strumienie Java 8: wiele filtrów vs. złożony stan
Czasami chcesz filtrować Streamz więcej niż jednym warunkiem: myList.stream().filter(x -&gt; x.size() &gt; 10).filter(x -&gt; x.isCool()) ... lub możesz zrobić to samo ze złożonym warunkiem i jednym filter : myList.stream().filter(x -&gt; x.size() &gt; 10 &amp;&amp; x -&gt; x.isCool()) ... Domyślam się, że drugie podejście ma lepszą charakterystykę wydajności, ale nie wiem …

19
Filtruj strumień Java do 1 i tylko 1 elementu
Próbuję użyć Java 8 Streamdo znalezienia elementów w LinkedList. Chcę jednak zagwarantować, że istnieje jedno i tylko jedno dopasowanie do kryteriów filtru. Weź ten kod: public static void main(String[] args) { LinkedList&lt;User&gt; users = new LinkedList&lt;&gt;(); users.add(new User(1, "User1")); users.add(new User(2, "User2")); users.add(new User(3, "User3")); User match = users.stream().filter((user) -&gt; …

5
Strumienie .min () i .max () strumienia Java 8: dlaczego to się kompiluje?
Uwaga: to pytanie pochodzi z martwego linku, który był poprzednim pytaniem SO, ale tutaj idzie ... Zobacz ten kod ( uwaga: wiem, że ten kod nie będzie „działał” i że Integer::comparenależy go użyć - właśnie wyodrębniłem go z połączonego pytania ): final ArrayList &lt;Integer&gt; list = IntStream.rangeClosed(1, 20).boxed().collect(Collectors.toList()); System.out.println(list.stream().max(Integer::max).get()); System.out.println(list.stream().min(Integer::min).get()); …
215 java  java-8  java-stream 



4
Java 8 Stream i działanie na tablicach
Właśnie odkryłem nowe możliwości strumienia Java 8. Pochodząc z Pythona, zastanawiałem się, czy istnieje teraz dobry sposób na wykonywanie operacji na tablicach, takich jak sumowanie, mnożenie dwóch tablic w sposób „pythonowy” w jednej linii? Dzięki

8
Java 8 - Najlepszy sposób na przekształcenie listy: mapa czy foreach?
Mam listę, w myListToParsektórej chcę filtrować elementy, zastosować metodę do każdego elementu i dodać wynik do innej listy myFinalList. W Javie 8 zauważyłem, że mogę to zrobić na 2 różne sposoby. Chciałbym poznać bardziej skuteczny sposób między nimi i zrozumieć, dlaczego jeden sposób jest lepszy od drugiego. Jestem otwarty na …
188 java  java-8  java-stream 

19
Ogranicz strumień o predykat
Czy istnieje operacja strumienia Java 8, która ogranicza (potencjalnie nieskończony), Streamdopóki pierwszy element nie dopasuje predykatu? W Javie 9 możemy użyć takeWhilejak w poniższym przykładzie, aby wydrukować wszystkie liczby mniejsze niż 10. IntStream .iterate(1, n -&gt; n + 1) .takeWhile(n -&gt; n &lt; 10) .forEach(System.out::println); Ponieważ w Javie 8 nie …
187 java  java-8  java-stream 

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.