T4l*_*l0n 3 java java-8 java-stream collectors
在这个例子中
Stream<MyClass>stream = Stream.of(new MyClass(5),new MyClass(15),new MyClass(8),new MyClass(12));
Map<Boolean, List<Integer>> map =
stream.collect(Collectors.partitioningBy(a->a.getNum()<10));
Run Code Online (Sandbox Code Playgroud)
在stream.collect检索地图布尔并List<MyClass>因此它不工作.我应该怎么做才能回到地图Boolean和List<Integer>呢?
通常,当您想要在一个groupingBy或一个partitioningBy操作中使用不同的聚合时,您可以通过指定另一个聚合来执行此操作,Collector如:
Map<Boolean, List<Integer>> map
= stream.collect(Collectors.partitioningBy(a -> a.getNum()<10,
Collectors.mapping(MyClass::getNum, Collectors.toList())));
Run Code Online (Sandbox Code Playgroud)
但是,当分区函数和聚合函数都在同一个属性上工作时,map前面的元素值更容易:
Map<Boolean, List<Integer>> map2
= stream.map(MyClass::getNum).collect(Collectors.partitioningBy(num -> num<10));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
323 次 |
| 最近记录: |