java-stream- все статьи тега


Как я могу использовать Mockito, чтобы проверить, что поток Java 8 имел ожидаемые значения?

Одно из взаимодействий, которое я хочу проверить, состоит в том, что класс Foo должен передать Stream<Changes> в FooListener.someChangesHappened. Существует ли идиома Mockito, чтобы проверить, что поток содержит ожидаемые объекты? ...

Как разделить список по условию с помощью потоков Java 8

Рассмотрим следующий код: List<Integer> odd = new ArrayList<Integer>(); List<Integer> even = null; List<Integer> myList = Arrays.asList(1,2,3,4,5,6,7,8,9,10); even = myList.stream() .filter(item -> { if(item%2 == 0) { return true;} else { odd.add(item); return false; } }) .collect(Collectors.toList()); Здес ...

Потоковые операции Java

У меня есть объект, "элемент" с полями: int: id Строка: цены Строка prices содержит одно или несколько значений цены, разделенных запятой. Задача: используя потоковые операции, я хочу получить карту типа Map<Integer,Set<Integer>> из List<Item> items Где ключ карты-id и множество имеет значение цены как целое число, извлеченное из строки цены. В списке будут повторяющиеся идентификаторы и могут иметь разные строки цен. Я придумал подход, который производит следующий резул ...

Java 8 stream map к списку ключей, отсортированных по значениям

У меня есть карта Map<Type, Long> countByType, и я хочу иметь список, который отсортировал (от min до max) ключи по их соответствующим значениям. Моя попытка такова: countByType.entrySet().stream().sorted().collect(Collectors.toList()); Однако это просто дает мне список записей, как я могу получить список типов, не теряя порядок? ...

Java Streams API суммирование списков в индексе

Я хотел бы знать, существует ли более эффективный способ суммирования всех древовидных списков - суммирование их значений в одном индексе. Причина, по которой я спрашиваю его, потому что, вероятно, используя Streams API, можно сделать его более универсальным для любого количества списков. List<Double> listA = getListA(); List<Double> listB = getListB(); List<Double> listC = getListC(); int listsSize = listA.size(); List<?> collect = IntStream.range(0, listsSize) ...

Потоки Java 8: множественные фильтры против сложного условия

Иногда требуется отфильтровать Stream с более чем одним условием: myList.stream().filter(x -> x.size() > 10).filter(x -> x.isCool()) ... Или вы можете сделать то же самое со сложным условием и одиночным filter: myList.stream().filter(x -> x.size() > 10 && x -> x.isCool()) ... Я предполагаю, что второй подход имеет лучшие характеристики производительности, но я не знаю этого. Первый подход выигрывает в удобочитаемости, но что лучше для производительности? ...

Как суммировать список целых чисел с потоками java?

Я хочу суммировать список целых чисел. Работает это следующим образом, но синтаксис не очень хорошо. Можно ли оптимизировать код? Map<String, Integer> integers; integers.values().stream().mapToInt(i -> i).sum(); ...

Java 8 NullPointerException в коллекторах.toMap

Java 8 Collectors.toMap бросает a NullPointerException если одно из значений 'null'. Я не понимаю этого поведения, карты могут содержать нулевые указатели в качестве значения без каких-либо проблем. Есть ли веская причина, почему значения не могут быть null для Collectors.toMap? кроме того, есть ли хороший способ Java 8 исправить это, или я должен вернуться к простому старому циклу for? пример моей проблемы: import java.util.ArrayList; import java.util.List; import java.util.Map; import java. ...

Java 8 stream's. min () and.max (): почему это компилируется?

Примечание: этот вопрос возникает из мертвой ссылки, которая была предыдущим вопросом SO, но здесь идет... посмотреть этот код (примечание: Я знаю, что этот код не будет "работать" и Integer::compare должен использоваться -- я только что извлек его из связанного вопроса): final ArrayList <Integer> 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 ...

Использование Java 8 опционально с Stream:: flatMap

новый Java 8 stream framework и друзья делают для некоторого очень краткого кода java, но я столкнулся с кажущейся простой ситуацией, которую сложно сделать лаконично. рассмотрим List<Thing> things и метод Optional<Other> resolve(Thing thing). Я хочу, чтобы карта Thingь Optional<Other>S и получить первый Other. Очевидным решением было бы использовать things.stream().flatMap(this::resolve).findFirst(), а flatMap требует, чтобы вы возвращали поток, и Optional нет stream() метод ...

Java8: HashMap для HashMap с использованием Stream / Map-Reduce / Collector

Я знаю, как" преобразовать " простой Java List С Y ->Z, например: List<String> x; List<Integer> y = x.stream() .map(s -> Integer.parseInt(s)) .collect(Collectors.toList()); теперь я хотел бы сделать в основном то же самое с картой, т. е.: INPUT: { "key1" -> "41", // "41" and "42" "key2" -> "42 // are Strings } OUTPUT: { "key1" -> 41, // 41 and 42 "key2" -> 42 // are Integers } решение не должно ограничиваться String ...

Должен ли я вернуть коллекцию или поток?

Предположим, у меня есть метод, который возвращает только для чтения в список: class Team { private List<Player> players = new ArrayList<>(); // ... public List<Player> getPlayers() { return Collections.unmodifiableList(players); } } далее предположим, что все, что делает клиент, это перебирает список один раз, сразу. Может быть, чтобы поместить игроков в JList или что-то в этом роде. Клиент делает не храните ссылку на список для последующего ос ...

Разница между потоками Java 8 и наблюдаемыми RxJava

являются ли потоки Java 8 похожими на наблюдаемые RxJava? Java 8 определение потока: классы в новом java.util.stream пакет предоставляет API потока для поддержка операций функционального стиля над потоками элементов. ...

Java 8 поток в обратном порядке

общий вопрос: Как правильно повернуть поток вспять? Предполагая, что мы не знаем, из какого типа элементов состоит этот поток, каков общий способ обращения любого потока? конкретный вопрос: IntStream предоставляет метод диапазона для генерации целых чисел в определенном диапазоне IntStream.range(-range, 0), теперь, когда я хочу изменить его диапазон переключения от 0 до отрицательного не будет работать, также я не могу использовать Integer::compare List<Integer> list = Arrays.asList(1, ...

В потоках Java peek действительно только для отладки?

Я читаю о потоках Java и открываю для себя новые вещи, как я иду вперед. Одна из новых вещей, которые я нашел, была ...

Java 8 Streams FlatMap пример метода

Я проверял предстоящий Java update, а именно: Java 8 or JDK 8. Да, я нетерпелив, есть много нового материала, но, есть что-то, чего я не понимаю, какой-то простой код: final Stream<Integer>stream = Stream.of(1,2,3,4,5,6,7,8,9,10); stream.flatMap(); javadocs являются public <R> Stream<R> flatMap(Function<? super T,? extends Stream<? extends R>> mapper) возвращает поток, состоящий из результатов замены каждого элемента этого потока содержимым отображенного ...

Сбор последовательных пар из потока

учитывая поток, такой как { 0, 1, 2, 3, 4 }, Как я могу наиболее элегантно преобразовать его в заданную форму: { new Pair(0, 1), new Pair(1, 2), new Pair(2, 3), new Pair(3, 4) } (предполагая, конечно, что я определил пару классов)? Edit: речь идет не только о ints или примитивных потоках. Ответ должен быть общим для потока любого типа. ...

Получить последний элемент потока / списка в одной строке

как я могу получить последний элемент потока или списка в следующем коде? здесь data.careas это List<CArea>: CArea first = data.careas.stream() .filter(c -> c.bbox.orientationHorizontal).findFirst().get(); CArea last = data.careas.stream() .filter(c -> c.bbox.orientationHorizontal).collect(Collectors.toList()).; //how to? как вы можете видеть, получая первый элемент, с определенным filter, это не сложно. однако получение последнего элемента в одном лайнере-настоящая боль: каж ...

Наиболее эффективный способ получить последний элемент потока

поток не имеет last() способ: Stream<T> stream; T last = stream.last(); // No such method какой самый элегантный и/или эффективный способ получить последний элемент (или null для пустой поток)? ...

Java 8 поток с пакетной обработкой

у меня есть большой файл, который содержит список элементов. Я хотел бы создать пакет элементов, сделать HTTP-запрос с этим пакетом (все элементы необходимы в качестве параметров в HTTP-запросе). Я могу сделать это очень легко с for цикл, но как любитель Java 8, я хочу попробовать написать это с помощью Java 8 Stream framework (и воспользоваться преимуществами ленивой обработки). пример: List<String> batch = new ArrayList<>(BATCH_SIZE); for (int i = 0; i < data.size(); i++) { ...