当前位置: 首页 > 编程笔记 >

Java 8中的收集器partitioningBy()方法

鲁烨
2023-03-14
本文向大家介绍Java 8中的收集器partitioningBy()方法,包括了Java 8中的收集器partitioningBy()方法的使用技巧和注意事项,需要的朋友参考一下

partioningBy()方法返回一个收集器,该收集器根据谓词对输入元素进行分区,并将它们组织成Map <Boolean,List <T >>。

语法如下。

static <T> Collector<T,?,Map<Boolean,List<T>>> partitioningBy(Predicate<? super T> predicate)

在这里,参数

  • T-输入元素的类型

  • 谓词-用于组织输入元素

要使用Java中的Collectors类,请导入以下包。

import java.util.stream.Collectors;

以下是partitioningBy()在Java中实现方法的示例。

示例

import java.util.Map;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Demo {
   public static void main(String[] args) {
      Stream<Integer> stream = Stream.of(25, 50, 75, 100, 125, 150);
      //对于流元素50为true-
      Map<Boolean, List<Integer>> m = stream.collect(Collectors.partitioningBy(a -> a == 50));
      System.out.println("Stream = "+ m);
   }
}

输出结果

Stream = {false=[25, 75, 100, 125, 150], true=[50]}
 类似资料:
  • 有没有java api可以让我跳过流直接操作集合(比如C#中的?):

  • 本文向大家介绍Java 8中的收集器collectionAndThen()方法,包括了Java 8中的收集器collectionAndThen()方法的使用技巧和注意事项,需要的朋友参考一下 Java Collectors类中的collectingAndThen()方法调整收集器以执行额外的完成转换。它返回collector,collector执行下游collector的操作,然后执行附加的结束步

  • 我有以下课程。 我希望能够按年龄分组,然后收集人名列表,而不是人名对象本身;所有这些都在一个漂亮的lamba表达式中。 为了简化所有这些,我链接了当前的解决方案,该解决方案存储按年龄分组的结果,然后迭代它以收集名称。 当前解决方案 不理想,为了学习,我想有一个更优雅、更高效的解决方案。

  • 所以我试图使用Java8流Collectors.toMap添加元素到新创建的Map。 要创建的映射可能包含其某些键的空值。这对于HashMap来说是完全可以接受的,当我使用stream forEach添加成员时,它会按预期工作: msgRouteProps是一个映射,其中键和值都是非空的。请注意,ReflectionUtil。getNamedMethod()调用可能会返回null,我希望将其放入结

  • 我想迭代一个对象列表。每个对象都包含一些对象的变量。更具体地说: 我的名单是: 所需的映射结构是:

  • 问题内容: Java 8中有什么方法可以将一个元素分组而不收集它们?我希望结果再次出现。因为我必须处理大量数据甚至是无限流,所以我无法先收集数据并再次流处理结果。 所有需要分组的元素在第一流中都是连续的。因此,我喜欢使流评估保持懒惰。 问题答案: 无法使用标准Stream API做到这一点。通常,您无法执行此操作,因为将来总是有可能出现属于任何已创建组的新项目,因此,在处理所有输入之前,您无法将组