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.
Chcę użyć Streamdo równoległego przetwarzania heterogenicznego zestawu zdalnie przechowywanych plików JSON o nieznanej liczbie (liczba plików nie jest znana z góry). Rozmiar plików może się znacznie różnić, od 1 rekordu JSON na plik do 100 000 rekordów w niektórych innych plikach. Rekord JSON w tym przypadku oznacza samodzielne JSON obiekt …
Zamknięte . To pytanie musi być bardziej skoncentrowane . Obecnie nie przyjmuje odpowiedzi. Chcesz poprawić to pytanie? Zaktualizuj pytanie, aby skupiało się tylko na jednym problemie, edytując ten post . Zamknięte 3 dni temu . AtomicInteger recordNumber = new AtomicInteger(); Files.lines(inputFile.toPath(), StandardCharsets.UTF_8) .map(record -> new Record(recordNumber.incrementAndGet(), record)) .parallel() .filter(record -> …
Mam listę takich kolorów: Różowy, niebieski, czerwony, niebieski, szary, zielony, fioletowy, czarny ... itp List<String> listOfColors = Arrays.asList("Pink", "Blue", "Red", "blue", "Grey", "green", "purple", "black"); Istnieje kilka operacji pośrednich, takich jak filtrowanie niektórych kolorów owoców, teraz mam filtrowane wyniki tam, gdzie chcę je posortować: Niebieski, czarny, niebieski, szary, zielony, różowy, …
Do czyszczenia listy danych stworzyłem metodę, która akceptuje listę danych i listę operacji czyszczenia do wykonania. public <T> List<T> cleanData(List<T> data, List<Function<T, T>> cleanOps) { List<T>dataNew=data.stream().map((str) -> { T cleanData = str; for(Function<T,T> function:cleanOps) { cleanData=function.apply(cleanData); } return cleanData; }).collect(Collectors.toList()); return dataNew; } Problem polega na tym, że ponownie tworzymy …
Znalazłem quiz na temat API Java 8 Stream metody peek, jak poniżej Arrays.asList("Fred", "Jim", "Sheila") .stream() .peek(System.out::println) .allMatch(s -> s.startsWith("F")); Dane wyjściowe to Fred Jim Nie wiem, jak działa ten strumień? Mój oczekiwany wynik powinien być Fred Jim Sheila Metoda peek () jest operacją pośrednią i przetwarza każdy element w …
Mam następujący kod: Stream<String> lines = reader.lines(); Jeśli ciąg pięści jest równy "email", chcę usunąć pierwszy ciąg ze strumienia. W przypadku innych ciągów ze strumienia nie potrzebuję tego sprawdzania. Jak mogę to osiągnąć? PS Jasne, że mogę przekształcić go w listę, a następnie użyć starej pętli dla starej szkoły, ale …
Mam mapę skrótu z niższymi wartościami, w wartościach mam datę jako ciąg danych typu. Chciałbym porównać wszystkie daty dostępne na mapie i wyodrębnić tylko jedną kluczową wartość, która ma najnowszą datę. Chciałbym porównać z wartościami, a nie kluczami. Podałem kod poniżej import java.util.HashMap; import java.util.Map; public class Test { public …
Mam Map<String,List<String>>i chcę, aby się zmieniło, Map<String,List<Long>>ponieważ każdy Stringna liście reprezentuje Long: Map<String,List<String>> input = ...; Map<String,List<Long>> output= input.entrySet() .stream() .collect(toMap(Entry::getKey, e -> e.getValue().stream() .map(Long::valueOf) .collect(toList())) ); Moim głównym problemem jest to, że każdy z nich Stringmoże nie przedstawiać poprawnie Long: może być jakiś problem.Long::valueOfmoże zgłaszać wyjątki. W takim przypadku …
Próbuję przefiltrować zasób i wykluczyć niektóre elementy na podstawie pola. Do wykluczenia mam zestaw (który zawiera identyfikator, który należy wykluczyć) i listę (zawiera wiele zakresów identyfikatorów, które należy wykluczyć). Napisałem poniższą logikę i nie jestem zadowolony z logiki drugiego filtra. Czy jest lepszy sposób, aby to zrobić w Javie 8? …
Mam Listz Employees z różnymi datami łączenia. Chcę uzyskać pracowników przed określoną datą dołączenia z listy i po niej za pomocą strumieni. próbowałem śledzić kod, List<Employee> employeeListAfter = employeeList.stream() .filter(e -> e.joiningDate.isAfter(specificDate)) .collect(Collectors.toList()); List<Employee> employeeListBefore = employeeList.stream() .filter(e -> e.joiningDate.isBefore(specificDate)) .collect(Collectors.toList()); class Employee{ int id; String name; LocalDate joiningDate; } …
Mam CSVplik 35 GB . Chcę przeczytać każdą linię i napisać linię do nowego pliku CSV, jeśli pasuje do określonego warunku. try (BufferedWriter writer = Files.newBufferedWriter(Paths.get("source.csv"))) { try (BufferedReader br = Files.newBufferedReader(Paths.get("target.csv"))) { br.lines().parallel() .filter(line -> StringUtils.isNotBlank(line)) //bit more complex in real world .forEach(line -> { writer.write(line + "\n"); }); …
Czy jest jakiś sposób, aby poniższe czynności można było wykonać jako jeden zestaw operacji strumieniowych, zamiast jawnie sprawdzać, czy zalecane Produkty są puste, a następnie zwracać domyślną listę, inaczej zwracać filtrowaną listę ? public List<Product> getRecommendedProducts() { List<Product> recommendedProducts = this.newProducts .stream() .filter(isAvailable) .collect(Collectors.toList()); if (recommendedProducts.isEmpty()) { return DEFAULT_PRODUCTS; } …
Chcę przekonwertować: Map<String, Map<String, List<Map<String, String>>>> inputMap do: Map<String, Map<String, CustomObject>> customMap inputMapjest podany w konfiguracji i jest gotowy, ale muszę customMapsformatować. CustomObject zostanie wyprowadzony z List<Map<String, String>>użycia kilku wierszy kodu w funkcji. Próbowałem normalnego sposobu iteracji mapy wejściowej i kopiowania kluczowych wartości w customMap. Czy jest jakiś skuteczny sposób, …
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.