Вопросы с тегом «java-stream»

Используйте этот тег для вопросов, связанных с использованием Stream API. Он был введен в Java 8 и поддерживает операции в функциональном стиле над потоками значений, такими как конвейеры filter-map-Reduce для коллекций.

7
Пример метода 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) Возвращает поток, состоящий из результатов замены …

5
Почему Stream.allMatch () возвращает true для пустого потока?
У нас с коллегой возникла ошибка, связанная с нашим предположением, что вызов пустого потока allMatch()вернется false. if (myItems.allMatch(i -> i.isValid()) { //do something } Конечно, это отчасти наша вина, если мы предполагаем, а не читаем документацию. Но я не понимаю, почему allMatch()возвращается поведение по умолчанию для пустого потока true. Что …

4
Как сохранить порядок итерации списка при использовании Collections.toMap () в потоке?
Я создаю Mapиз a Listследующим образом: List<String> strings = Arrays.asList("a", "bb", "ccc"); Map<String, Integer> map = strings.stream() .collect(Collectors.toMap(Function.identity(), String::length)); Я хочу сохранить тот же порядок итераций, что и в List. Как я могу создать с LinkedHashMapпомощью Collectors.toMap()методов?

10
Java 8: предпочтительный способ подсчета итераций лямбды?
Я часто сталкиваюсь с одной и той же проблемой. Мне нужно подсчитать прогоны лямбды для использования вне лямбды . Например: myStream.stream().filter(...).forEach(item -> { ... ; runCount++}); System.out.println("The lambda ran " + runCount + "times"); Проблема в том, что runCount должен быть final, поэтому он не может быть int. Это не …

9
Java 8: форматирование лямбда-выражения с помощью символов новой строки и отступов
Я хотел бы добиться с помощью лямбда-отступа следующего: Многострочный оператор: 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); Однострочный оператор: List<String> strings = Arrays.stream(ppl) .map((x) -> …

5
Как я могу собрать поток Java 8 в Guava ImmutableCollection?
Я бы хотел сделать следующее: List<Integer> list = IntStream.range(0, 7).collect(Collectors.toList()); но в том смысле, что полученный список является реализацией Guava ImmutableList. Я знаю, что могу сделать List<Integer> list = IntStream.range(0, 7).collect(Collectors.toList()); List<Integer> immutableList = ImmutableList.copyOf(list); но я хотел бы собирать к нему напрямую. я пытался List<Integer> list = IntStream.range(0, 7) …

6
Как составить новый список со свойством объекта, находящегося в другом списке
Представьте, что у меня есть список определенных объектов: List<Student> И мне нужно создать еще один список, включая idsиз Studentsприведенного выше списка: List<Integer> Можно ли этого добиться, избегая использования цикла, используя коллекции apache или guava ? Какие методы должны быть полезны в моем случае?

4
Java 8: объединить списки с потоковым API
У меня следующая ситуация Map<Key, ListContainer> map; public class ListContainer{ List<AClass> lst; } Я должен объединить все списки lstиз ListContainerобъектов из Mapкарты. public static void main(String args[]){ List<AClass> alltheObjectsAClass = map.values().stream(). // continue.... } Есть идеи, как с помощью потокового API Java 8?

3
Проверить instanceof в потоке
У меня есть такое выражение: scheduleIntervalContainers.stream() .filter(sic -> ((ScheduleIntervalContainer) sic).getStartTime() != ((ScheduleIntervalContainer)sic).getEndTime()) .collect(Collectors.toList()); ... где scheduleIntervalContainersесть тип элемента ScheduleContainer: final List<ScheduleContainer> scheduleIntervalContainers Можно ли перед фильтром проверить тип?

3
Операции промежуточного потока не учитываются при подсчете
Кажется, у меня проблемы с пониманием того, как Java объединяет потоковые операции в потоковый конвейер. При выполнении следующего кода 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()); } Консоль только печатает 4. StringBuilderОбъект все еще …
33 java  java-stream 

2
Как я могу пропустить вызов лимита (номера) с потоком, когда число равно 0?
У меня есть некоторый код Java, который предоставляет объекты из items. Это ограничивает их на основе maxNumber: items.stream() .map(this::myMapper) .filter(item -> item != null) .limit(maxNumber) .collect(Collectors.toList()); Это работает правильно, но вопрос в следующем: есть ли способ пропустить ограничение, когда maxNumber == 0? Я знаю, что мог сделать это: if (maxNumber …


3
Параллельные бесконечные потоки Java исчерпывают память
Я пытаюсь понять, почему следующая Java-программа дает OutOfMemoryError, а соответствующая .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() ); У меня есть два вопроса: Каков предполагаемый результат этой программы? Без .parallel()этого кажется, что это просто вывод, sum(1+2+3+...)что означает, что он просто …

5
Как создать карту с различными значениями из карты (и использовать правильный ключ, используя BinaryOperator)?
У меня есть карта, Map<K, V>и моя цель состоит в том, чтобы удалить дублированные значения и Map<K, V>снова вывести ту же структуру . В случае дублируется значение найдено, то необходимо выбрать один ключ ( k) из двух клавиш ( k1и k1) , которые держат эти ценности, по этой причине, предположим …

2
Как понять этот метод Java 8 Stream collect ()?
Я пытался преобразовать массив int в List, и я выбрал незнакомый путь использования Java 8 Stream и придумал Arrays.stream(arr).boxed().collect(Collectors.toList()); Я до сих пор с трудом полностью понимаю эту строку, в основном, Почему Collectors.toList()в этом случае возвращается ArrayList<Integer>реализующий Listинтерфейс? Почему нет LinkedList<Integer>или какой-либо другой универсальный класс, соответствующий Listинтерфейсу? Я ничего не …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.