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

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

9
Почему Stream <T> не реализует Iterable <T>?
В Java 8 у нас есть класс Stream &lt;T&gt; , который, как ни странно, имеет метод Iterator&lt;T&gt; iterator() Таким образом, вы ожидаете, что он реализует интерфейс Iterable &lt;T&gt; , который требует именно этот метод, но это не так. Когда я хочу перебрать поток с помощью цикла foreach, я должен сделать …

3
Ссылки на методы Java 8: предоставляют Поставщика, способного предоставить параметризованный результат
Я хотел бы использовать java.util.Optional.orElseThrow() с типом исключения, который запрашивает параметр конструктора. Что-то вроде этого: .orElseThrow(MyException::new(someArgument)) // obviously NOT working Есть ли способ создать поставщика, который передает значение моего аргумента?
259 java  java-8  java-stream 

7
Игнорировать дубликаты при создании карты с использованием потоков
Map&lt;String, String&gt; phoneBook = people.stream() .collect(toMap(Person::getName, Person::getAddress)); Я получаю, java.lang.IllegalStateException: Duplicate keyкогда дублированный элемент найден. Можно ли игнорировать такое исключение при добавлении значений на карту? Когда есть дубликат, он просто должен продолжаться, игнорируя этот дубликат ключа.
257 java  java-8  java-stream 

3
Почему Iterable <T> не предоставляет методы stream () и parallelStream ()?
Я задаюсь вопросом, почему Iterableинтерфейс не обеспечивают stream()и parallelStream()методы. Рассмотрим следующий класс: public class Hand implements Iterable&lt;Card&gt; { private final List&lt;Card&gt; list = new ArrayList&lt;&gt;(); private final int capacity; //... @Override public Iterator&lt;Card&gt; iterator() { return list.iterator(); } } Это реализация руки, так как вы можете иметь карты в руке …

3
Java 8 лямбда, Function.identity () или t-> t
На этом вопросе есть ответы на Переполнение стека на русском : Ямбы в Java 8, что лучше использовать - Function.identity () или t-&gt; t? У меня есть вопрос, касающийся использования Function.identity()метода. Представьте себе следующий код: Arrays.asList("a", "b", "c") .stream() .map(Function.identity()) // &lt;- This, .map(str -&gt; str) // &lt;- is the …

12
Использование Java 8 необязательно с Stream :: flatMap
Новая потоковая среда Java 8 и ее друзья создают очень лаконичный Java-код, но я столкнулся с на первый взгляд простой ситуацией, которую сложно сделать лаконично. Рассмотрим List&lt;Thing&gt; thingsи метод Optional&lt;Other&gt; resolve(Thing thing). Я хочу отобразить Things на Optional&lt;Other&gt;s и получить первое Other. Очевидным решением будет использование things.stream().flatMap(this::resolve).findFirst(), но оно flatMapтребует, …

5
Почему Java Streams разовые?
В отличие от C # IEnumerable, где конвейер выполнения может выполняться столько раз, сколько мы хотим, в Java поток может быть «повторен» только один раз. Любой вызов терминальной операции закрывает поток, делая его непригодным для использования. Эта «особенность» отнимает много энергии. Я думаю, причина этого не техническая. Какие конструктивные соображения …

4
Java 8 Streams: несколько фильтров против сложных условий
Иногда вы хотите отфильтровать Streamнесколько условий: myList.stream().filter(x -&gt; x.size() &gt; 10).filter(x -&gt; x.isCool()) ... или вы можете сделать то же самое со сложным условием и одним filter : myList.stream().filter(x -&gt; x.size() &gt; 10 &amp;&amp; x -&gt; x.isCool()) ... Я предполагаю, что второй подход имеет лучшие характеристики производительности, но я этого …

19
Фильтр Java Stream на 1 и только 1 элемент
Я пытаюсь использовать Java 8 Streams, чтобы найти элементы в LinkedList. Однако я хочу гарантировать, что существует одно и только одно соответствие критериям фильтра. Возьми этот код: public static void main(String[] args) { LinkedList&lt;User&gt; users = new LinkedList&lt;&gt;(); users.add(new User(1, "User1")); users.add(new User(2, "User2")); users.add(new User(3, "User3")); User match = …

5
.Min () и .max () потока Java 8: почему это компилируется?
Примечание: этот вопрос возник из мертвой ссылки, которая была предыдущим вопросом SO, но здесь идет ... Посмотрите этот код ( примечание: я знаю, что этот код не будет «работать» и его Integer::compareследует использовать - я просто извлек его из связанного вопроса ): final ArrayList &lt;Integer&gt; list = IntStream.rangeClosed(1, 20).boxed().collect(Collectors.toList()); System.out.println(list.stream().max(Integer::max).get()); …
215 java  java-8  java-stream 

9
Java8: от HashMap <X, Y> до HashMap <X, Z> с использованием Stream / Map-Reduce / Collector
Я знаю, как "преобразовать" простую Java List из Y-&gt; Z, то есть: List&lt;String&gt; x; List&lt;Integer&gt; y = x.stream() .map(s -&gt; Integer.parseInt(s)) .collect(Collectors.toList()); Теперь я хотел бы сделать то же самое с картой, то есть: INPUT: { "key1" -&gt; "41", // "41" and "42" "key2" -&gt; "42 // are Strings } …

13
Использование Java 8 для преобразования списка объектов в строку, полученную из метода toString ()
В Java 8 появилось много полезных новых вещей. Например, я могу перебирать поток по списку объектов, а затем суммировать значения из определенного поля Objectэкземпляров. Например public class AClass { private int value; public int getValue() { return value; } } Integer sum = list.stream().mapToInt(AClass::getValue).sum(); Таким образом, я спрашиваю, существует ли …

4
Java 8 Stream и работа с массивами
Я только что открыл новые возможности потока Java 8. Исходя из Python, мне было интересно, есть ли теперь удобный способ выполнять операции над массивами, такие как суммирование, умножение двух массивов "питонным" способом? Спасибо

8
Java 8 - лучший способ преобразовать список: карта или foreach?
У меня есть список, в myListToParseкотором я хочу отфильтровать элементы и применить метод для каждого элемента, и добавить результат в другой список myFinalList. С Java 8 я заметил, что могу сделать это двумя разными способами. Я хотел бы знать более эффективный путь между ними и понять, почему один путь лучше, …
188 java  java-8  java-stream 

19
Ограничить поток предикатом
Существует ли потоковая операция Java 8, которая ограничивает (потенциально бесконечный) Streamдо тех пор, пока первый элемент не будет соответствовать предикату? В Java 9 мы можем использовать, takeWhileкак в примере ниже, чтобы напечатать все числа меньше 10. IntStream .iterate(1, n -&gt; n + 1) .takeWhile(n -&gt; n &lt; 10) .forEach(System.out::println); Поскольку …
187 java  java-8  java-stream 

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