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

简介: 本节书摘来华章计算机《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,而值是由满足/不满足断言的元素构成的列表。

相关文章
|
1月前
|
开发框架 Java API
最新Java基础系列课程--Day13-高级特性(二)
最新Java基础系列课程--Day13-高级特性
|
5月前
|
算法 安全 Java
2023年Java核心技术第十三篇(篇篇万字精讲)
2023年Java核心技术第十三篇(篇篇万字精讲)
55 1
|
1月前
|
Java 程序员 API
最新Java基础系列课程--Day13-高级特性(三)
最新Java基础系列课程--Day13-高级特性
|
1月前
|
开发框架 Java 程序员
最新Java基础系列课程--Day13-高级特性(一)
最新Java基础系列课程--Day13-高级特性
|
2月前
|
开发框架 Java 程序员
最新Java基础系列课程--Day13-高级特性
最新Java基础系列课程--Day13-高级特性
|
2月前
|
存储 Java 编译器
《Java 核心技术卷1 基础知识》第三章 Java 的基本程序设计结构 笔记(下)
《Java 核心技术卷1 基础知识》第三章 Java 的基本程序设计结构 笔记
78 0
|
2月前
|
存储 自然语言处理 Java
《Java 核心技术卷1 基础知识》第三章 Java 的基本程序设计结构 笔记(上)
《Java 核心技术卷1 基础知识》第三章 Java 的基本程序设计结构 笔记
76 0
|
2月前
|
Oracle Java 关系型数据库
《Java 核心技术卷1 基础知识》第二章 Java 程序设计环境 笔记
《Java 核心技术卷1 基础知识》第二章 Java 程序设计环境 笔记
29 1
|
2月前
|
存储 Java 编译器
《Java 核心技术卷1 基础知识》第一章 Java程序设计概述 笔记
《Java 核心技术卷1 基础知识》第一章 Java程序设计概述 笔记
40 0
|
2月前
|
Java API 容器
资深Java大牛带你由基础到原理再到项目实战,轻松掌控核心技术
《Java编程的逻辑》致力于帮助读者真正理解Java编程。对于每个语言特性和API,不仅介绍其概念和用法,还分析了为什么要有这个概念,实现原理是什么,背后的思维逻辑是什么;对于类库,分析了大量源码,使读者不仅知其然,还知其所以然,以透彻理解相关知识点。
资深Java大牛带你由基础到原理再到项目实战,轻松掌控核心技术