数据结构和数据准备

@Data
@AllArgsConstructor
@NoArgsConstructor
static class StreamItem {
Integer id;
String name;
Boolean sex;
} List<StreamItem> list = Lists.newArrayList(new StreamItem(1, "a", true), new StreamItem(2, "b", false),
new StreamItem(3, "c", true), new StreamItem(1, "d", false), new StreamItem(4, "e", true));

map

List<String> list2 = list.stream().map(StreamItem::getName).collect(Collectors.toList());
System.out.println(list2); [a, b, c, d, e]

groupingBy

Map<Integer, List<StreamItem>> list2 = list.stream().collect(Collectors.groupingBy(StreamItem::getId));
System.out.println(list2); {1=[StreamStudy.StreamItem(id=1, name=a, sex=true), StreamStudy.StreamItem(id=1, name=d, sex=false)], 2=[StreamStudy.StreamItem(id=2, name=b, sex=false)],
3=[StreamStudy.StreamItem(id=3, name=c, sex=true)], 4=[StreamStudy.StreamItem(id=4, name=e, sex=true)]}

toMap

Map<Integer, String> list2 = list.stream().collect(Collectors.toMap(StreamItem::getId, StreamItem::getName, (k1, k2) -> k2));
System.out.println(list2); {1=d, 2=b, 3=c, 4=e}

filter

List<StreamItem> list2 = list.stream().filter(StreamItem::getSex).collect(Collectors.toList());
System.out.println(list2); [StreamStudy.StreamItem(id=1, name=a, sex=true), StreamStudy.StreamItem(id=3, name=c, sex=true), StreamStudy.StreamItem(id=4, name=e, sex=true)]

sum

int sum = list.stream().mapToInt(StreamItem::getId).sum();
System.out.println(sum); sum = list.stream().map(StreamItem::getId).reduce(Integer::sum).get();
System.out.println(sum); sum = list.stream().map(StreamItem::getId).reduce(0, Integer::sum);
System.out.println(sum); BigDecimal bigDecimal = list.stream()
.map(streamItem -> new BigDecimal(streamItem.getId()))
.reduce(BigDecimal.ZERO, BigDecimal::add);
System.out.println(bigDecimal); 11
11
11
11

参考

使用Stream快速对List进行一些操作

Java8之Consumer、Supplier、Predicate和Function攻略

Java8中Stream 的一些用法的更多相关文章

  1. Java中stream的详细用法

    来自于:Java 8 stream的详细用法_旅行者-CSDN博客_java stream 一.概述 Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行 ...

  2. java8中Stream数据流

    筛选重复的元素 Stream 接口支持 distinct 的方法, 它会返回一个元素(根据流所生成元素的 hashCode和equals方法实现)的流. 例如,以下代码会筛选出列表中所有的偶数,并确保 ...

  3. java8中stream的map和flatmap的理解

    转自https://blog.csdn.net/wynjauu/article/details/78741093 假如我们有这样一个需求给定单词列表["Hello","W ...

  4. 深入理解Java8中Stream的实现原理

    Stream Pipelines 前面我们已经学会如何使用Stream API,用起来真的很爽,但简洁的方法下面似乎隐藏着无尽的秘密,如此强大的API是如何实现的呢?比如Pipeline是怎么执行的, ...

  5. java8中stream常用方法详解

    map: 用作类型转换 如把集合里面的字符串转为大写,或者一个对象的集合取几个字段转为新的对象集合filter: 过滤 符合条件的集合元素保存下来,不符合条件的去掉flatMap:合并集合,比如Lis ...

  6. Java8 中的 Optional 相关用法

    基本方法: ofNullable() 为可能 null 的值创建一个 Optional 实例,  然后可以对该实例遍历/过滤, 判断是否存在,或者为空时执行.. ifPresent(...) 如果值存 ...

  7. 【转】Java8中list转map方法总结

    https://blog.csdn.net/zlj1217/article/details/81611834 背景在最近的工作开发之中,慢慢习惯了很多Java8中的Stream的用法,很方便而且也可以 ...

  8. java8的stream功能及常用方法

    Java8中stream对集合操作做了简化,用stream操作集合能极大程度简化代码.Stream 就如同一个迭代器(Iterator),单向,不可往复,数据只能遍历一次,遍历过一次后就用尽了. 一. ...

  9. 讲透JAVA Stream的collect用法与原理,远比你想象的更强大

    大家好,又见面了. 在我前面的文章<吃透JAVA的Stream流操作,多年实践总结>中呢,对Stream的整体情况进行了细致全面的讲解,也大概介绍了下结果收集器Collectors的常见用 ...

随机推荐

  1. Centos7,PHP7安装swoole

    Swoole详细介绍及如何使用,这里暂时不做说明,可以参考一下文档:https://wiki.swoole.com/ 源码编译安装 下载地址如下: https://github.com/swoole/ ...

  2. [Leetcode]Sql系列3

    题目1 产品数据表: Products +---------------+---------+ | Column Name | Type | +---------------+---------+ | ...

  3. js 去掉字符串最后一个逗号:笑死我了

    今天突然遇到js 去掉字符串最后一个逗号的问题,本想偷懒搜个代码吧,没想到看到百度的第一条记录是这么一篇文章. 网易博客: http://blog.163.com/li_crane/blog/stat ...

  4. 2.1 Spring5源码编译

    一. 准备工作 1. . 编译环境 maven jdk8 idea 2. 编译版本: SpringV5.2.7RELEASE+GradleWapper+jdk1.8.0_131编译 二. 源码下载 g ...

  5. Vue elelment登录验证 简单版

    http.js import axios from 'axios' import { Message, Loading } from 'element-ui'; import router from ...

  6. Windows Server系统部署MySQL数据库

    由于工作需要在阿里云服务器中使用MySQL,所以安装一下MySQL数据库,中间也踩了一些坑,现在将整个过程给大家记录下来,便于后续查找. 阿里云服务器是WinServer2012系统,之前在Windo ...

  7. docker之windows安装&centOS安装

    按这个安装  没什么毛病 https://blog.csdn.net/vitaair/article/details/80894890 https://www.runoob.com/docker/ce ...

  8. 在VS2019使用MASM编写汇编程序

    具体的配置步骤可以参考: 汇编环境搭建 Windows10 VS2019 MASM32 本文主要是入门向的教程,VS2019中要调用C语言函数需要加上 includelib ucrt.lib incl ...

  9. python自动保存百度网盘资源,一定要看

    觉得有帮助的别忘了关注一下知识图谱与大数据公众号 开始 在上一文中,我们保存了百度云盘的地址和提取码,但是这种分享链接很容易被屏蔽,最好的做法就是保存资源到自己的网盘,不过采集的链接有上万个,人肉保存 ...

  10. git将本地仓库中的文件上传到远程仓库

    现在我们开始创建本地git仓库(版本库又叫仓库) (本地仓库:$ git init之后的目录): 1.任意地方新建文件夹aaa,右击git bash here, 2.弹出一个对话框, 3. 首先配置你 ...