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.
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ę …
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? …
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?
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ż …
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: …
Załóżmy, że mamy klasę Obj class Obj{ int field; } i że masz listę Objinstancji, tj List<Obj> lst. Teraz, jak mogę znaleźć w Java8 strumieniach sumę wartości pól int fieldz obiektów na liście lstpod kryterium filtrowania (np. Dla obiektu okryterium to o.field > 10)?
Wyobraź sobie, że mam listę pewnych obiektów: List<Student> Muszę wygenerować kolejną listę zawierającą elementy idsz Studentspowyższej listy: List<Integer> Unikając pętli, czy można to osiągnąć za pomocą kolekcji apache lub guawy ? Które metody powinny być przydatne w moim przypadku?
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?
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. …
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) …
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 …
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 …
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 …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.