Java 8 - 收集器Collectors_分区partitioningBy

简介: Java 8 - 收集器Collectors_分区partitioningBy

20200510181139786.png


概述

分区是分组的特殊情况:由一个谓词(返回一个布尔值的函数)作为分类函数,它称分区函数

分区函数返回一个布尔值,这意味着得到的分组 Map 的键类型是 Boolean ,于是它最多可以分为两组—— true 是一组, false 是一组


Demo

举个例子: 把菜单按照素食和非素食分开

      Map<Boolean, List<Dish>> collect =  menu.stream().collect(partitioningBy(Dish::isVegetarian));
        // 素菜
        System.out.println(collect.get(true));


通过 Map 中键为 true 的值,就可以找出所有的素菜了 。


当然了,用同样的分区谓词,对菜单 List 创建的流作筛选,然后把结果收集到另外一个 List中也可以获得相同的结果

 List<Dish> xx = menu.stream().filter(Dish::isVegetarian).collect(toList());


相关文章
|
2月前
|
消息中间件 存储 Java
大数据-58 Kafka 高级特性 消息发送02-自定义序列化器、自定义分区器 Java代码实现
大数据-58 Kafka 高级特性 消息发送02-自定义序列化器、自定义分区器 Java代码实现
59 3
|
4月前
|
监控 Java 开发工具
【事件中心 Azure Event Hub】Event Hub Java SDK的消费端出现不消费某一个分区中数据的情况,出现IdleTimerExpired错误消息记录
【事件中心 Azure Event Hub】Event Hub Java SDK的消费端出现不消费某一个分区中数据的情况,出现IdleTimerExpired错误消息记录
|
5月前
|
Java API Apache
怎么在在 Java 中对List进行分区
本文介绍了如何将列表拆分为给定大小的子列表。尽管标准Java集合API未直接支持此功能,但Guava和Apache Commons Collections提供了相关API。
|
5月前
|
算法 Java 开发者
Java面试题:Java内存探秘与多线程并发实战,Java内存模型及分区:理解Java堆、栈、方法区等内存区域的作用,垃圾收集机制:掌握常见的垃圾收集算法及其优缺点
Java面试题:Java内存探秘与多线程并发实战,Java内存模型及分区:理解Java堆、栈、方法区等内存区域的作用,垃圾收集机制:掌握常见的垃圾收集算法及其优缺点
43 0
|
6月前
|
Java
Java 8 Collectors 深入解析与示例
Java 8 Collectors 深入解析与示例
|
7月前
|
Java
Java8 Stream Collectors groupingBy使用
Java8 Stream Collectors groupingBy使用
Java流式操作——Collectors工具类
maxBy:获取流中最大元素;minBy:获取流中最小元素
|
Java
Java 8 - 收集器Collectors_实战
Java 8 - 收集器Collectors_实战
99 0
|
安全 Java
Java 8 - 收集器Collectors_分组groupingBy
Java 8 - 收集器Collectors_分组groupingBy
312 0
|
Java API
Java12 Collectors.teeing 你真的需要了解一下
Java12 Collectors.teeing 你真的需要了解一下
Java12 Collectors.teeing 你真的需要了解一下