zl程序教程

您现在的位置是:首页 >  后端

当前栏目

《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一1.10 群组和分区

JAVA 10 特性 高级 分区 核心技术 原书 1.10
2023-09-27 14:24:37 时间
本节书摘来华章计算机《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一书中的第1章 ,第1.10节,[美] 凯S.霍斯特曼(Cay S. Horstmann) 著陈昊鹏 译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1.10 群组和分区

在上一节中,你看到了如何收集给定国家的所有语言,但是其处理显得有些冗长。你必须为每个映射表的值都生成单例集,然后指定如何将现有集与新集合并。将具有相同特性的值群聚成组是非常常见的,并且groupingBy方法直接就支持它。
让我们来看看通过国家来群组Locale的问题。首先,构建该映射表:
image

注意:快速复习一下地点:每个Locale都有一个语言代码(例如英语的en)和一个国家代码(例如美国的US)。Locale en_US描述的是美国英语,而en_IE是爱尔兰英语。某些国家有多个Locale。例如,ga_IE是爱尔兰的盖尔语,而前面的示例也展示了我的JVM知道瑞士有三个Locale。
当分类函数是断言函数(即返回boolean值的函数)时,流的元素可以分区为两个列表:该函数返回true的元素和其他的元素。在这种情况下,使用partitioningBy比使用groupingBy要更高效。例如,在下面的代码中,我们将所有Locale分成了使用英语和使用所有其他语言的两类:
image

注意:如果调用groupingByConcurrent方法,就会在使用并行流时获得一个被并行组装的并行映射表。这与toConcurrentMap方法完全类似。
java.util.stream.Collector 8
image

产生一个收集器,它会产生一个映射表,其键是true/false,而值是由满足/不满足断言的元素构成的列表。


GitHub上超屌的Java进阶教程,Java核心技术及大公司架构案例汇总 汇总Java生态圈常用技术框架、开源中间件,系统架构、数据库、大公司架构案例、常用三方类库、项目管理、线上问题排查、个人成长、思考等知识
Java 核心技术之序列化 Serializable 一、序列化概念 将对象在内存中的状态保存下来,在需要的时候获取。 序列化:将对象转换为字节序列,以便在网络传输或存储。 反序列化:将字节序列转换为对象。
Java核心技术之stream详解+Java8及以后的新特性 如何更好的使用Lambda表达式,优雅的使用Stream操作数据的切片、筛选、过滤,以及在大数据量下归类与计算利器Map/Reduce
Java核心技术之泛型详解 Java核心技术之泛型详解,没看过官网,不知道类型擦除会产生的问题还敢说自己了解泛型,原理、源码、实战有了解吗