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());


相关文章
|
消息中间件 存储 Java
大数据-58 Kafka 高级特性 消息发送02-自定义序列化器、自定义分区器 Java代码实现
大数据-58 Kafka 高级特性 消息发送02-自定义序列化器、自定义分区器 Java代码实现
250 3
|
监控 Java 开发工具
【事件中心 Azure Event Hub】Event Hub Java SDK的消费端出现不消费某一个分区中数据的情况,出现IdleTimerExpired错误消息记录
【事件中心 Azure Event Hub】Event Hub Java SDK的消费端出现不消费某一个分区中数据的情况,出现IdleTimerExpired错误消息记录
128 3
|
Java API Apache
怎么在在 Java 中对List进行分区
本文介绍了如何将列表拆分为给定大小的子列表。尽管标准Java集合API未直接支持此功能,但Guava和Apache Commons Collections提供了相关API。
401 1
|
算法 Java 开发者
Java面试题:Java内存探秘与多线程并发实战,Java内存模型及分区:理解Java堆、栈、方法区等内存区域的作用,垃圾收集机制:掌握常见的垃圾收集算法及其优缺点
Java面试题:Java内存探秘与多线程并发实战,Java内存模型及分区:理解Java堆、栈、方法区等内存区域的作用,垃圾收集机制:掌握常见的垃圾收集算法及其优缺点
143 0
Java 8 Collectors 深入解析与示例
Java 8 Collectors 深入解析与示例
227 0
Java8 Stream Collectors groupingBy使用
Java8 Stream Collectors groupingBy使用
137 0
Java流式操作——Collectors工具类
maxBy:获取流中最大元素;minBy:获取流中最小元素
|
Java
Java 8 - 收集器Collectors_实战
Java 8 - 收集器Collectors_实战
210 0
|
安全 Java
Java 8 - 收集器Collectors_分组groupingBy
Java 8 - 收集器Collectors_分组groupingBy
702 0
|
2月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
165 1