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

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

934
Список Java 8 <V> на карту <K, V>

Я хочу перевести Список объектов в Карту, используя потоки и лямбды Java 8. Вот как я бы написал это на Java 7 и ниже. private Map<String, Choice> nameMap(List<Choice> choices) { final Map<String, Choice> hashMap = new HashMap<>(); for (final Choice choice : choices) {...

515
Должен ли я всегда использовать параллельный поток, когда это возможно?

С Java 8 и лямбдами легко перебирать коллекции как потоки, и так же просто использовать параллельный поток. Два примера из документов , второй с использованием parallelStream: myShapesCollection.stream() .filter(e -> e.getColor() == Color.RED) .forEach(e -> System.out.println(e.getName()));...

504
Найти первый элемент по предикату

Я только начал играть с лямбдами Java 8, и я пытаюсь реализовать некоторые вещи, к которым я привык в функциональных языках. Например, большинство функциональных языков имеют какую-то функцию поиска, которая работает с последовательностями, или списки, которые возвращают первый элемент, для...

466
Java 8 Iterable.forEach () против цикла foreach

На этот вопрос есть ответы на Переполнение стека на русском : Цикл foreach против Iterable.foreach в Java 8: что лучше? Что из следующего является лучшей практикой в ​​Java 8? Java 8: joins.forEach(join -> mIrc.join(mSession, join)); Java 7: for (String join : joins) { mIrc.join(mSession,...

456
Java 8 Различается по свойству

В Java 8, как я могу отфильтровать коллекцию, используя StreamAPI, проверив отличимость свойства каждого объекта? Например, у меня есть список Personобъектов, и я хочу удалить людей с тем же именем, persons.stream().distinct(); Будет использовать проверку равенства по умолчанию для Personобъекта,...

443
Получение списка из java.util.stream.Stream в Java 8

Я играл с лямбдами Java 8, чтобы легко фильтровать коллекции. Но я не нашел краткий способ получить результат в виде нового списка в том же утверждении. Вот мой самый лаконичный подход: List<Long> sourceLongList = Arrays.asList(1L, 10L, 50L, 80L, 100L, 120L, 133L, 333L); List<Long>...

420
Преобразование Iterable в Stream с использованием Java 8 JDK

У меня есть интерфейс, который возвращается java.lang.Iterable<T>. Я хотел бы манипулировать этим результатом с помощью Java 8 Stream API. Однако Iterable не может «течь». Любая идея, как использовать Iterable в качестве потока без преобразования его в...

398
Пользовательский пул потоков в параллельном потоке Java 8

Можно ли указать пользовательский пул потоков для параллельного потока Java 8 ? Я не могу найти это нигде. Представьте, что у меня есть серверное приложение, и я хотел бы использовать параллельные потоки. Но приложение большое и многопоточное, поэтому я хочу разделить его. Я не хочу медленное...

331
Java 8 NullPointerException в Collectors.toMap

Java 8 Collectors.toMapвыбрасывает, NullPointerExceptionесли одно из значений 'null'. Я не понимаю этого поведения, карты могут содержать нулевые указатели в качестве значения без каких-либо проблем. Есть ли веская причина, почему значения не могут быть нулевыми для Collectors.toMap? Кроме того,...

287
В чем разница между Collection.stream (). ForEach () и Collection.forEach ()?

Я понимаю, что с помощью .stream()я могу использовать цепные операции, такие как .filter()или использовать параллельный поток. Но какая между ними разница, если мне нужно выполнить небольшие операции (например, распечатать элементы списка)? collection.stream().forEach(System.out::println);...

287
Как я могу выбросить CHECKED исключения из потоков Java 8?

Как я могу выбросить CHECKED исключения из потоков / лямбд Java 8? Другими словами, я хочу сделать такой код: public List<Class> getClasses() throws ClassNotFoundException { List<Class> classes = Stream.of("java.lang.Object", "java.lang.Integer", "java.lang.String") .map(className ->...

262
Почему Stream <T> не реализует Iterable <T>?

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

259
Ссылки на методы Java 8: предоставляют Поставщика, способного предоставить параметризованный результат

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

257
Игнорировать дубликаты при создании карты с использованием потоков

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

241
Java 8 лямбда, Function.identity () или t-> t

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