Collectors常用方法
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常用方法相关推荐
- optional转化为set_JDK8新特性--学习笔记(OptionalCollectors)
Optional 为什么要用Optional为了避免空对象的出现,这是大家都知道的基础事实 Optional是函数交互的时候,不管是传参还是返回值,封装的Optional都能很好的规避null的情况. ...
- java流式编程(七)Collectors中的常用方法
目录 前言 一.创建实体类 二.测试数据 二.测试方法 1.toCollection(collectionFactory) 2.toList() 3.toSet() 4.toMap(keyMapper ...
- Stream操作时Collectors工具类中常用方法
文章目录 示例文件准备 实体类User : 测试main方法制作数据 : 聚合与分组 toList.toSet.toCollection toMap.toConcurrentMap groupingB ...
- Stream流创建,常用方法
常用词句说明 语法糖: Syntactic sugar 这种语法对语言的功能并没有影响,但是更方便使用,通常来说使用语法糖可以增加程序的可读性. stream简介 A sequence of el ...
- stream流的常用方法
演示类: package com;import lombok.Data;import java.math.BigDecimal;public class User {//姓名private Strin ...
- Stream编程之Collectors.joining方法解析
首先看一个例子 List<String> list = Lists.newArrayList("a", "b", "c", &q ...
- stream流、数学类、String类的常用方法、date、密码等
一.API 1.基本概念 英文全称Application Programming Interface,翻译为"应用程序编程接口". 是一些预先定义的函数,目的是提供应用程序与开发人 ...
- Java8特性 stream流常用方法
Java8特性 stream流常用方法 Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据. Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方 ...
- Java 8 Stream常用方法学习
文章目录 Stream基础概念 1. 分类 2. 常用方法 2.1 forEach 2.2 filter 2.3 distinct 2.4 Collectors - (Collector工具库) 2. ...
最新文章
- 客户管理系统代码项目_西安人力资源管理系统如何有效管理销售,提高工作的效率...
- 灰度图像--图像增强 非锐化掩蔽 (Unsharpening Mask) .
- 深入浅出 5种IO模型。
- java项目红叉_完美解决Eclipse导入的项目上有个红叉,但不影响项目运行的问题
- 最速下降法和牛顿方法的Python实现和MATLAB实现
- vue 自定义marquee无缝滚动组件
- 深度学习笔记(5) 深层神经网络
- 图文详解 Windows 2003服务器集群安装(1)
- Linux下Java安装与配置
- 管理感悟:不要别人扫自己的屁股
- 电商网站详情页系统架构
- 微软私有云服务器,微软私有云
- 字符转 ASCII 码
- 使用C#实现Rundll32程序功能
- Python进化算法之多目标优化与代码实战
- 点赞封面未发送已删除_微信表白新功能:有种喜欢,是给你朋友圈封面点赞
- 2019年六月前端面试经验总结
- 网易我的世界手机版服务器文件在哪个文件夹,网易我的世界手机版怎么导入地图_手机版地图导入教程...
- 资源Resource的介绍
- kerberos+druid+phoenix