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.

7
Przykład metody Java 8 Streams FlatMap
Sprawdzałem nadchodzące Java update, a mianowicie:Java 8 or JDK 8 . Tak, nie mogę się doczekać, jest dużo nowych rzeczy, ale jest coś, czego nie rozumiem, prosty kod: final Stream<Integer>stream = Stream.of(1,2,3,4,5,6,7,8,9,10); stream.flatMap(); javadocs są public <R> Stream<R> flatMap(Function<? super T,? extends Stream<? extends R>> mapper) Zwraca strumień składający się …

5
Dlaczego Stream.allMatch () zwraca wartość true dla pustego strumienia?
Mój kolega i ja mieliśmy błąd, który wynikał z naszego założenia, że ​​wywołanie pustego strumienia allMatch()powróci false. if (myItems.allMatch(i -> i.isValid()) { //do something } Oczywiście to trochę nasza wina, że ​​przyjmujemy i nie czytamy dokumentacji. Ale nie rozumiem, dlaczego allMatch()powraca domyślne zachowanie pustego strumienia true. Jaki był tego powód? …

4
Jak zachować kolejność iteracji listy podczas korzystania z Collections.toMap () w strumieniu?
Tworzę Mapz a Listw następujący sposób: List<String> strings = Arrays.asList("a", "bb", "ccc"); Map<String, Integer> map = strings.stream() .collect(Collectors.toMap(Function.identity(), String::length)); Chcę zachować tę samą kolejność iteracji, jaka była w List. Jak mogę utworzyć za LinkedHashMappomocą Collectors.toMap()metod?

10
Java 8: preferowany sposób zliczania iteracji lambda?
Często mam ten sam problem. Muszę policzyć przebiegi lambda do użycia poza lambdą . Na przykład: myStream.stream().filter(...).forEach(item -> { ... ; runCount++}); System.out.println("The lambda ran " + runCount + "times"); Problem polega na tym, że runCount musi być final, więc nie może to być int. Nie może to być, Integerponieważ …

9
Java 8: Formatowanie lambda z nowymi liniami i wcięciami
To, co chciałbym osiągnąć za pomocą wcięcia lambda, jest następujące: Instrukcja wielowierszowa: String[] ppl = new String[] { "Karen (F)", "Kevin (M)", "Lee (M)", "Joan (F)", "Des (M)", "Rick (M)" }; List<String> strings = Arrays.stream(ppl) .filter( (x) -> { return x.contains("(M)"); } ).collect(Collectors.toList()); strings.stream().forEach(System.out::println); Instrukcja jednowierszowa: List<String> strings = Arrays.stream(ppl) …

5
Jak mogę zebrać strumień Java 8 w ImmutableCollection Guava?
Chciałbym wykonać następujące czynności: List<Integer> list = IntStream.range(0, 7).collect(Collectors.toList()); ale w taki sposób, że wynikowa lista jest implementacją guawy ImmutableList. Wiem, że mógłbym to zrobić List<Integer> list = IntStream.range(0, 7).collect(Collectors.toList()); List<Integer> immutableList = ImmutableList.copyOf(list); ale chciałbym odebrać do niego bezpośrednio. próbowałem List<Integer> list = IntStream.range(0, 7) .collect(Collectors.toCollection(ImmutableList::of)); ale rzucił wyjątek: …



4
Java 8: scal listy ze strumieniowym API
Mam następującą sytuację Map<Key, ListContainer> map; public class ListContainer{ List<AClass> lst; } Muszę scalić wszystkie listy lstz ListContainerobiektów z Mapmapy. public static void main(String args[]){ List<AClass> alltheObjectsAClass = map.values().stream(). // continue.... } Masz jakiś pomysł, jak, używając strumieniowego API Java 8?

3
Pośrednie operacje strumieniowe nie są obliczane na podstawie liczby
Wygląda na to, że mam problem ze zrozumieniem, w jaki sposób Java komponuje operacje strumieniowe do potoku strumieniowego. Podczas wykonywania następującego kodu public static void main(String[] args) { StringBuilder sb = new StringBuilder(); var count = Stream.of(new String[]{"1", "2", "3", "4"}) .map(sb::append) .count(); System.out.println(count); System.out.println(sb.toString()); } Konsola drukuje tylko 4. …
33 java  java-stream 

2
Jak mogę pominąć limit (numer) połączenia ze strumieniem, gdy liczba jest równa 0?
Mam trochę kodu Java, który zapewnia obiekty z items. Ogranicza je na podstawie maxNumber: items.stream() .map(this::myMapper) .filter(item -> item != null) .limit(maxNumber) .collect(Collectors.toList()); Działa poprawnie, ale pytanie brzmi: Czy istnieje sposób na ominięcie ograniczenia, gdy maxNumber == 0? Wiem, że mógłbym to zrobić: if (maxNumber == 0) { items.stream() .map(this::myMapper) …


3
W równoległych nieskończonych strumieniach Java zabrakło pamięci
Próbuję zrozumieć, dlaczego następujący program Java daje OutOfMemoryError, a odpowiedni program bez .parallel(). System.out.println(Stream .iterate(1, i -> i+1) .parallel() .flatMap(n -> Stream.iterate(n, i -> i+n)) .mapToInt(Integer::intValue) .limit(100_000_000) .sum() ); Mam dwa pytania: Jakie jest zamierzone wyjście tego programu? Bez .parallel()tego wydaje się, że to po prostu wyprowadza, sum(1+2+3+...)co oznacza, że …

5
Jak stworzyć mapę z odrębnymi wartościami z mapy (i użyć odpowiedniego klucza za pomocą BinaryOperator)?
Mam mapę Map<K, V>i moim celem jest usunięcie zduplikowanych wartości i Map<K, V>ponowne wygenerowanie tej samej struktury . W przypadku, gdy wartość duplikatów zostanie znaleziony, musi być wybrany jeden klawisz ( k) z dwóch przycisków ( k1i k1), które utrzymują te wartości, z tego powodu, przyjmijmy, że BinaryOperator<K>dając kod k1i …

2
Jak zrozumieć tę metodę Collect () Java 8 Stream?
Próbowałem przekonwertować tablicę int na List i wybrałem nieznaną drogę korzystania z Java 8 Stream i wymyśliłem to Arrays.stream(arr).boxed().collect(Collectors.toList()); Nadal mam trudności z pełnym zrozumieniem tej linii, głównie Dlaczego Collectors.toList()w tym przypadku zwraca interfejs ArrayList<Integer>implementujący List? Dlaczego nie LinkedList<Integer>lub inna ogólna klasa zgodna z Listinterfejsem? Nie mogę nic na ten …

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.