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++) { ...