java8新特性:stream流中collect用法

java8新特性:stream流中collect用法

1.toList

List collectList = Stream.of(1, 2, 3, 4)

.collect(Collectors.toList());

System.out.println("collectList: " + collectList);

// 打印结果

// collectList: [1, 2, 3, 4]

2.toSet

Set collectSet = Stream.of(2, 3, 3, 3)

.collect(Collectors.toSet());

System.out.println("collectSet: " + collectSet);

// 打印结果

// collectSet: [2,3]

3.分组

//按照名字分组

System.out.println("按照名字分组");

System.out.println(

peopleList.stream().collect(Collectors.groupingBy(People::getName))

);

例子:(直接看打印语句即可,前面很多代码没有看的价值)

People实体类:

package com.index.collections;

/**

* @author index

* @date 2020/10/27

**/

public class People {

private int age;

private int gender;

private String name;

public People(int age, int gender, String name) {

this.age = age;

this.gender = gender;

this.name = name;

}

public People(){}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public int getGender() {

return gender;

}

public void setGender(int gender) {

this.gender = gender;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

@Override

public String toString() {

return "People{" +

"age=" + age +

", gender=" + gender +

", name='" + name + '\'' +

'}';

}

}

测试collect:

package com.index.collections;

import org.junit.Test;

import java.util.*;

import java.util.stream.Collectors;

/**

* @author index

* @date 2020/10/27

**/

public class TestcollectingAndThen {

@Test

public void test(){

final int NUM = 14;

List peopleList = new ArrayList<>(NUM);

String[] names = {"小张", "小龙", "小牛", "小猪", "小黑", "小红", "小白"};

for (int i = 0; i < 5; i++) {

//添加5个19岁的随机性别和名字的小朋友

peopleList.add(new People(19, (int) (Math.random() * 2), names[(int) (Math.random() * names.length)]));

}

for (int i = 5; i < 8; i++) {

//添加3个31岁的随机性别和名字的小朋友

peopleList.add(new People(31, (int) (Math.random() * 2), names[(int) (Math.random() * names.length)]));

}

for (int i = 8; i < NUM; i++) {

//添加6个22岁的随机性别和名字的小朋友

peopleList.add(new People(22, (int) (Math.random() * 2), names[(int) (Math.random() * names.length)]));

}

//collectingAndThen先对stream里的元素进行collecting,之后再对结果进行操作,

// 下面的结果是一个map,对map计算元素数目

System.out.println("分组数目:");

Integer groupCount = peopleList.stream().collect(

Collectors.collectingAndThen(Collectors.groupingBy(People::getName), Map::size));

System.out.println(groupCount);

System.out.println("-------------------------------------");

//按照名字分组

System.out.println("按照名字分组");

System.out.println(

peopleList.stream().collect(Collectors.groupingBy(People::getName))

);

System.out.println("-------------------------------------");

//按照名字分组(分组的结果是一个map),并统计每一个分组(map中的每一个value)中的元素数目

System.out.println("统计每一个分组(map中的每一个value)中的元素数目");

System.out.println(

peopleList.stream().collect(Collectors.groupingBy(People::getName, Collectors.counting()))

);

System.out.println("-------------------------------------");

//按照名字分组(分组的结果是一个map),并取出每一组的最大值

System.out.println("取出每一组的最大值");

System.out.println(

peopleList.stream().collect(Collectors.groupingBy(People::getName, Collectors.maxBy(new Comparator() {

@Override

public int compare(People o1, People o2) {

return o1.getAge() - o2.getAge();

}

})))

);

}

}

输出结果:

java8新特性:stream流中collect用法相关教程

Java8:从永久代PermGen到元空间Metaspace

Java8:从永久代PermGen到元空间Metaspace 众所周知java8的新特性之一是完全删除了永久生成( PermGen )空间,自jdk7发布以来,Oracle就已经宣布了这一点。例如,自jdk7以来,内部字符串已经从 PermGen 空间中删除。jdk8版本完成了它的退役。本文将与大家分享

Python中GIL锁

Python中GIL锁 GIL并不是Python的特性,Python完全可以不依赖于GIL。 GIL(Global Interpreter Lock)译为 全局解释器锁 (这里的全局包括 多个CPU 下), 并不是 Python独有特性. GIL仅是Python官方解释器CPython引入的一个互斥锁(mutex)概念 (除它之外,还有PyPy

Scala编程开发

Scala编程开发 Scala编程 一、Scala简介 1、Scala特性 2、Scala源自Java 3、Scala的优势 二、Scala基础 1、Scala常量与变量 2、Scala数据类型 3、Scala数据类型层次结构 4、字符串插值 三、Scala条件控制 1、条件控制 2、循环控制 3、循环中断 四、Scala数据

Java8新特性四:Stream流

Java8新特性四:Stream流 说到Stream便容易想到I/O Stream,而实际上,谁规定“流”就一定是“IO流”呢?在Java 8中,得益于Lambda所带来的函数式编程,引入了一个全新的Stream概念,用于解决已有集合类库既有的弊端。 1.1 引言 传统集合的多步遍历代码几乎所

Angular10中的特性模板和根模板(AppModule)

Angular10中的特性模板和根模板(AppModule) 前提是安装了 Angular cli ,以下的大部分文件创建都是依赖于 cli 提供的指令 Angular 中的特性模板和根模板( AppModule ) 区别在于特性模板可以把应用划分,个人理解类似于组件化 特性模板创建的指令 ng g module

【HTML CSS】笔记5日 新增特性

【HTML CSS】笔记5日 新增特性 HTML5 的新增特性主要是针对于以前的不足,增加了一些新的标签、新的表单和新的表单属性等。 这些新的特性都有兼容性问题,基本是IE9+以上版本的浏览器才支持,如果不考虑兼容性问题,可以大量使用这些新特性。 新特性增加了很

jdk9新特性学习(一)

jdk9新特性学习(一) // jdk8 -- jdk9 jdk9中不再有jre文件夹,而是将jre中的文件放至根目录中 jdk8中JVM在运行时必须要加载rt.jar文件,使得java运行环境臃肿。 模块化根据不同模块加载程序运行需要的class,本质上是在package外再加一层module,通过模块管

反射、特性综合练习

反射、特性综合练习 题目: 1: 开发商 程序引用开发者dll文件,检索可用的滤波方法,并启动测试; 2: 开发商 提供带有接口方法的dll文件(SDK)以约束开发者的行为; 3: 开发者 提供包含滤波方法的dll文件; 新建 解决方案 ,创建 工程DllPublishFilter ,

java的collect用法_java8新特性:stream流中collect用法相关推荐

  1. Java复习第11天---11.4---Java8新特性---Stream流常用方法3和综合案例

    Java复习第11天---11.4---Java8新特性---Stream流常用方法3和综合案例 目录 文章目录 1.count:计数-终结方法 2.limit:取前几个元素-延迟方法 3.skip: ...

  2. Java复习第11天---11.3---Java8新特性---Stream流特点和常用方法2

    Java复习第11天---11.3---Java8新特性---Stream流特点和常用方法2 目录 文章目录 1.Stream流特点 2.filter:过滤 3.map:映射 ***后记*** : 内 ...

  3. Java复习第11天---11.2---Java8新特性---Stream流获取方式和常用方法1

    Java复习第11天---11.2---Java8新特性---Stream流获取方式和常用方法1 目录 文章目录 1.Stream流的2中获取方式 1.1.集合的stream方法 1.2.Stream ...

  4. Java8新特性Stream流详解

    陈老老老板 说明:新的专栏,本专栏专门讲Java8新特性,把平时遇到的问题与Java8的写法进行总结,需要注意的地方都标红了,一起加油. 本文是介绍Java8新特性Stream流常用方法超详细教学 说 ...

  5. Stream流中collect方法

    Stream流中collect方法 一.收集Stream流到集合和指定集和中 1.示例 2.结果 二.收集 Stream 流中的数据到数组中 1.示例 2.结果 三.Stream流中数据聚合/分组/分 ...

  6. java 8 新特性_Java8新特性Stream

    Stream (在阅读本文前,请务必掌握Lambda表达式以及方法引用的使用:Lambda表达式--方法引用,Java8新特性Lambda表达式,在本文的示例中,使用了大量的Lambda表达式). S ...

  7. Java JDK 1.8 新特性 Stream流

    Stream流 stream流与IO流没有任何关系,stream流类似车间的生产线,对数据进行加工,不存储数据 获取Stream流的两种方式 public class StreamIntro {pub ...

  8. Java8新特性——Stream流:不同于IO流的流,操作集合数据

    文章目录 Stream流 1.认识Stream流(源码说明) 1.1.Stream流和Collection的区别 1.2.流的获取方式 1.3.流操作和管道 1.4.并行性 1.5.不干扰内政 1.6 ...

  9. 【Stream】java8新特性Stream流总结

    一.什么是stream 在 java8 中增加了一个新的抽象接口 Stream API,使用 Stream 操作集合类似于使用 SQL 语句数据库查找数据类似,提供直观的方法进行操作. Stream ...

最新文章

  1. 重磅直播|光学3D测量技术原理及应用
  2. 第三章 使用Servlet处理HTTP响应
  3. 牛客小白月赛6 J 洋灰三角
  4. leetcode 90. 子集 II(回溯算法)
  5. 工作335:uni-ele-el-date-picker限制选择时间
  6. angularjs中按回车事件_浅谈angularjs中响应回车事件
  7. 破碎纪念---记第二次Nexus4换屏
  8. unistd.h中定义函数
  9. 使用Jflash给华大半导体的MCU烧录程序
  10. java项目经验总结
  11. msvcr71.dll控件常规安装
  12. 回溯算法之迷宫问题(Maze)
  13. 《HarmonyOS开发 - 小凌派-RK2206开发笔记》第2章 源码编译与固件下载
  14. 给定一个字符串,去除整个字符串中重复的字符
  15. 打造自己的MyLifeOrganized 2(MLO2)云同步
  16. 电脑管理android手机版下载安装,airdroid下载
  17. oracle 求正数总和,为什么sum时负数不能相加?
  18. TeamViewer轻松解决企业远程办公安全隐患
  19. uni-app 页面生命周期
  20. 浏览器运行java后未响应_java 无法在浏览器中运行?

热门文章

  1. 为什么注销电话卡非要去营业厅
  2. LWN:Ghost 发布系统!
  3. 五年级上学期计算机教案,小学五年级《信息技术》教案上册(全册).pdf
  4. 注册微信小程序下载并使用开发者工具
  5. VC10和C++ 0x (1) - lambda表达式
  6. 火牛单片机rtc时钟配置_RTC 实时时钟驱动 - Linux内核之我的天下 - CSDN博客
  7. Storm8 游戏盘点
  8. 名字大作战小游戏代码(含注释)
  9. 速码云信息-----短信接口代码参数
  10. android播放音乐(3):播放网络上的音乐