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

99
Когда мне следует использовать потоки?

Я просто столкнулся с вопросом при использовании a Listи его stream()метода. Хотя я знаю, как их использовать, я не совсем уверен, когда их использовать. Например, у меня есть список, содержащий разные пути в разные места. Теперь я хотел бы проверить, содержит ли один заданный путь какой-либо из...

99
Множественные нулевые проверки в Java 8

У меня есть приведенный ниже код, который немного уродлив для множественных нулевых проверок. String s = null; if (str1 != null) { s = str1; } else if (str2 != null) { s = str2; } else if (str3 != null) { s = str3; } else { s = str4; } Поэтому я попытался использовать, Optional.ofNullableкак...

96
Сортировка списка с помощью stream.sorted () в Java

Мне интересно отсортировать список из потока. Это код, который я использую: list.stream() .sorted((o1, o2)->o1.getItem().getValue().compareTo(o2.getItem().getValue())) .collect(Collectors.toList()); Я что-то упускаю? Список не сортируется. Он должен отсортировать списки по элементу с наименьшим...

94
Почему я не могу сопоставить целые числа со строками при потоковой передаче из массива?

Этот код работает (взят из Javadoc): List<Integer> numbers = Arrays.asList(1, 2, 3, 4); String commaSeparatedNumbers = numbers.stream() .map(i -> i.toString()) .collect(Collectors.joining(", ")); Этот не может быть скомпилирован: int[] numbers = {1, 2, 3, 4}; String commaSeparatedNumbers...

91
Разница между findAny () и findFirst () в Java 8

На этот вопрос есть ответы на Stack Overflow на русском : Какие различия между findFirst и findAny в Java 8? Я немного путают между Stream#findAny()и Stream#findFirst()из StreamAPI в Java 8. Я понял, что оба будут возвращать первый совпавший элемент из потока, например, при использовании вместе с...

89
Почему findFirst () выдает исключение NullPointerException, если первый найденный элемент имеет значение NULL?

Почему это бросает java.lang.NullPointerException? List<String> strings = new ArrayList<>(); strings.add(null); strings.add("test"); String firstString = strings.stream() .findFirst() // Exception thrown here .orElse("StringWhenListIsEmpty"); //.orElse(null); // Changing the `orElse()`...

89
Можно ли использовать Java 8 Stream API в Android API <24?

Я прочитал этот пост здесь. Но все же я не могу запустить код, содержащий функции Java 8 Stream API, подобные приведенному ниже, на minSdkVersion <24. List<Car> newCars = cars.stream() .filter(s -> s.getColor().equals("red")) .collect(Collectors.toList()); Это не запускается из-за...

88
Java 8 лямбда получить и удалить элемент из списка

Учитывая список элементов, я хочу получить элемент с заданным свойством и удалить его из списка. Лучшее решение, которое я нашел: ProducerDTO p = producersProcedureActive .stream() .filter(producer -> producer.getPod().equals(pod)) .findFirst() .get(); producersProcedureActive.remove(p); Можно...

88
Как мы должны управлять потоком jdk8 для нулевых значений

Добрый день, друзья Java-разработчики! Я знаю, что эта тема может быть немного, так in advanceкак JDK8 еще не выпущен (и пока не во всяком случае ..), но я читал несколько статей о лямбда-выражениях и, в частности, части, связанной с новым API коллекции, известным как Stream. Вот пример,...

88
'Optional.get ()' без проверки 'isPresent ()'

У меня есть следующий код поиска на Java: return getTableViewController().getMe().getColumns().stream().filter($->Database.equalsColumnName($.getId(), columnId)).findFirst().get(); Я хотел найти столбец по имени и вернуть первый найденный. Я так понимаю, бывает, что ничего не найдено и его...

87
Java 8, Streams для поиска повторяющихся элементов

Я пытаюсь перечислить повторяющиеся элементы в целочисленном списке, например, List<Integer> numbers = Arrays.asList(new Integer[]{1,2,1,3,4,4}); using Streams of jdk 8. Кто-нибудь пробовал. Чтобы удалить дубликаты, мы можем использовать отдельный () api. Но как насчет поиска повторяющихся...

86
forEach против forEachOrdered в Java 8 Stream

Я понимаю, что эти методы различаются порядком выполнения, но во всех моих тестах я не могу добиться другого выполнения заказа. Пример: System.out.println("forEach Demo"); Stream.of("AAA","BBB","CCC").forEach(s->System.out.println("Output:"+s)); System.out.println("forEachOrdered Demo");...

86
Почему параллельный поток с лямбдой в статическом инициализаторе вызывает тупик?

Я столкнулся со странной ситуацией, когда использование параллельного потока с лямбдой в статическом инициализаторе, казалось бы, занимает вечность без использования ЦП. Вот код: class Deadlock { static { IntStream.range(0, 10000).parallel().map(i -> i).count(); System.out.println("done"); }...

85
Пример метода 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>...

84
Как сохранить порядок итерации списка при использовании 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. Как я могу создать с...

84
Java 8: предпочтительный способ подсчета итераций лямбды?

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

84
Почему Stream.allMatch () возвращает true для пустого потока?

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

83
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)"); }...