import org.junit.Test;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;/*** @author W* @date 2022/4/18*/
public class StreamTest {/*** 返回List集合* toList*/@Testpublic void stream1(){List<Integer> integers = Arrays.asList(1,2,3,4,5,6,6);System.out.println(integers);List<Integer> collect = integers.stream().map(x -> x * x).collect(Collectors.toList());System.out.println(collect);}/*** 返回Set集合* toSet*/@Testpublic void stream3(){List<Integer> integers = Arrays.asList(1,2,3,4,5,6,6);System.out.println(integers);Set<Integer> collect = integers.stream().filter(value -> value > 2).collect(Collectors.toSet());System.out.println(collect);}/*** counting* 计算元素数量*/@Testpublic void stream4(){List<Integer> integers = Arrays.asList(1,2,3,4,5,6,6);System.out.println(integers);Long collect = integers.stream().collect(Collectors.counting());System.out.println(collect);System.out.println(integers);}/*** maxBy* 取最大值【naturalOrder自然排序】*/@Testpublic void stream5(){List<Integer> integers = Arrays.asList(1,2,3,4,5,6,6);System.out.println(integers);Integer integer = integers.stream().collect(Collectors.maxBy(Comparator.naturalOrder())).get();System.out.println(integer);System.out.println(integers);}/*** minBy* 取最小值【naturalOrder自然排序】*/@Testpublic void stream6(){List<Integer> integers = Arrays.asList(1,2,3,4,5,6,6);System.out.println(integers);Integer integer = integers.stream().collect(Collectors.minBy(Comparator.naturalOrder())).get();System.out.println(integer);System.out.println(integers);}/*** partitioningBy* 用于将一个集合划分为2个集合并将其添加到映射中集合中,* 满足给定条件的划分一个集合,并以true为key* 不满足给定条件的划分一个集合,并以false为key*/@Testpublic void stream7(){List<Integer> integers = Arrays.asList(1,2,3,4,5,6,6);System.out.println(integers);Map<Boolean, List<Integer>> collect = integers.stream().collect(Collectors.partitioningBy(v -> (int) v > 3));System.out.println(collect);System.out.println(integers);}/*** joining* 连用指定的字符串连接集合内的元素* 结合内元素须为String类型*/@Testpublic void stream8(){List<String> integers = Arrays.asList("1","2");String collect = integers.stream().collect(Collectors.joining(","));System.out.println(collect);//用指定的字符串连接集合内的元素,并在首尾加上指定字符String collect2 = integers.stream().collect(Collectors.joining(",","《","》"));System.out.println(collect2);//用指定的字符串连接int类型集合内的元素List<Integer> integers3 = Arrays.asList(1,1);String collect3 = integers3.stream().map(a-> String.valueOf(a) ).collect(Collectors.joining(","));System.out.println(collect3);}/*** 集合的平均值* averagingLong* averagingInt* averagingDouble*/@Testpublic void stream9(){//long类型求平均值List<Long> longValues = Arrays.asList(100l,200l,300l);Double d1 = longValues.stream().collect(Collectors.averagingLong(x -> x * 2));System.out.println("long类型求平均值:"+d1);//int类型求平均值List<Integer> intValues = Arrays.asList(12,30,45);Double d2 = intValues.stream().collect(Collectors.averagingInt(x->x));System.out.println("int类型求平均值:"+d2);//double类型求平均值List<Double> doubleValues = Arrays.asList(1.1,2.0,3.0,4.0,5.0,5.0);Double d3 = doubleValues.stream().collect(Collectors.averagingDouble(x->x));System.out.println("double类型求平均值:"+d3);}/*** 求和* summingLong* summingInt* summingDouble*/@Testpublic void stream10(){//long类型求平均值List<Long> longValues = Arrays.asList(100l,200l,300l);Long d1 = longValues.stream().collect(Collectors.summingLong(x -> x));System.out.println("long类型求和:"+d1);//int类型求平均值List<Integer> intValues = Arrays.asList(12,30,45);Integer d2 = intValues.stream().collect(Collectors.summingInt(x->x));System.out.println("int类型求和:"+d2);//double类型求平均值List<Double> doubleValues = Arrays.asList(1.1,2.0,3.0,4.0,5.0,5.0);Double d3 = doubleValues.stream().collect(Collectors.summingDouble(x->x));System.out.println("double类型求求和:"+d3);}/*** 汇总整数* 得到平均值、最小值、最大值、所有值的计数和总和。*/@Testpublic void stream11(){List<Integer> intValues = Arrays.asList(12,30,45);IntSummaryStatistics collect = intValues.stream().collect(Collectors.summarizingInt(x -> x));System.out.println(collect);}/**** 创建Map* toMap* Function.identity()指向集合中的值*/@Testpublic void stream12(){List<String> integers = Arrays.asList("dsf","sfsf");Map<String, Integer> collect = integers.stream().collect(Collectors.toMap(item -> item, String::length));System.out.println(collect);Map<String, Integer> collect2 = integers.stream().collect(Collectors.toMap(Function.identity(), String::length));System.out.println(collect2);//去重创建map【map中key唯一,不可重复】List<String> strings = Arrays.asList("dsf","sfsf","ggfdd","sfsf");Map<String, Integer> collect3 = strings.stream().collect(Collectors.toMap(item -> item, String::length,(i1,i2)->i1));System.out.println(collect3);}/*** 分组函数* GroupingBy*/@Testpublic void stream13(){//分组List<String> strings = Arrays.asList("alpha","beta","gamma");final Map<Integer, List<String>> collect = strings.stream().collect(Collectors.groupingBy(String::length));System.out.println(collect);//分组求和List<Map<String, String>> list = new ArrayList<>();Map<String, String> map =  new HashMap<>();map.put("name","张三");map.put("money","25");Map<String, String> map2 =  new HashMap<>();map2.put("name","张四");map2.put("money","50");Map<String, String> map3 =  new HashMap<>();map3.put("name","张三");map3.put("money","30");list.add(map);list.add(map2);list.add(map3);Map<String, Integer> name = list.stream().collect(Collectors.groupingBy(item -> item.get("name"), Collectors.summingInt(item -> Integer.parseInt(item.get("money")))));System.out.println(name);}}

Collectors常用方法相关推荐

  1. optional转化为set_JDK8新特性--学习笔记(OptionalCollectors)

    Optional 为什么要用Optional为了避免空对象的出现,这是大家都知道的基础事实 Optional是函数交互的时候,不管是传参还是返回值,封装的Optional都能很好的规避null的情况. ...

  2. java流式编程(七)Collectors中的常用方法

    目录 前言 一.创建实体类 二.测试数据 二.测试方法 1.toCollection(collectionFactory) 2.toList() 3.toSet() 4.toMap(keyMapper ...

  3. Stream操作时Collectors工具类中常用方法

    文章目录 示例文件准备 实体类User : 测试main方法制作数据 : 聚合与分组 toList.toSet.toCollection toMap.toConcurrentMap groupingB ...

  4. Stream流创建,常用方法

    常用词句说明 ​ 语法糖: Syntactic sugar 这种语法对语言的功能并没有影响,但是更方便使用,通常来说使用语法糖可以增加程序的可读性. stream简介 A sequence of el ...

  5. stream流的常用方法

    演示类: package com;import lombok.Data;import java.math.BigDecimal;public class User {//姓名private Strin ...

  6. Stream编程之Collectors.joining方法解析

    首先看一个例子 List<String> list = Lists.newArrayList("a", "b", "c", &q ...

  7. stream流、数学类、String类的常用方法、date、密码等

    一.API 1.基本概念 英文全称Application Programming Interface,翻译为"应用程序编程接口". 是一些预先定义的函数,目的是提供应用程序与开发人 ...

  8. Java8特性 stream流常用方法

    Java8特性 stream流常用方法 Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据. Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方 ...

  9. Java 8 Stream常用方法学习

    文章目录 Stream基础概念 1. 分类 2. 常用方法 2.1 forEach 2.2 filter 2.3 distinct 2.4 Collectors - (Collector工具库) 2. ...

最新文章

  1. 客户管理系统代码项目_西安人力资源管理系统如何有效管理销售,提高工作的效率...
  2. 灰度图像--图像增强 非锐化掩蔽 (Unsharpening Mask) .
  3. 深入浅出 5种IO模型。
  4. java项目红叉_完美解决Eclipse导入的项目上有个红叉,但不影响项目运行的问题
  5. 最速下降法和牛顿方法的Python实现和MATLAB实现
  6. vue 自定义marquee无缝滚动组件
  7. 深度学习笔记(5) 深层神经网络
  8. 图文详解 Windows 2003服务器集群安装(1)
  9. Linux下Java安装与配置
  10. 管理感悟:不要别人扫自己的屁股
  11. 电商网站详情页系统架构
  12. 微软私有云服务器,微软私有云
  13. 字符转 ASCII 码
  14. 使用C#实现Rundll32程序功能
  15. Python进化算法之多目标优化与代码实战
  16. 点赞封面未发送已删除_微信表白新功能:有种喜欢,是给你朋友圈封面点赞
  17. 2019年六月前端面试经验总结
  18. 网易我的世界手机版服务器文件在哪个文件夹,网易我的世界手机版怎么导入地图_手机版地图导入教程...
  19. 资源Resource的介绍
  20. kerberos+druid+phoenix

热门文章

  1. Geopandas安装教程及GDAL报错处理
  2. 50个令人耳目一新的网页纹理设计
  3. mouseout、mouseover和mouseleave、mouseenter
  4. mysql自增序列重置0开始
  5. linux Ubuntu将默认bash修改为csh
  6. HIT Online Judge1006 - Weird Clock
  7. java重写controller返回体
  8. cloudstack 安全组
  9. 如何快速学习一门语言
  10. 常用的积分方法讨论(数学表达与代码整理)(龙格-库塔、中值积分、欧拉积分)