stream流的使用各种记录

记录stream流的使用

List 转成List

我这里获得一串以逗号相隔的字符串,我最后要生成List

c 复制代码
        List<Long> list = Arrays.stream(ids.split(","))
        .map((str) -> Long.parseLong(str))
        .collect(Collectors.toList());

filter相关,筛选数据

c 复制代码
       List<Integer> list = Arrays.asList(7, 6, 9, 3, 8, 2, 1);

        // 遍历输出符合条件的元素
        list.stream().filter(x -> x > 6).forEach(System.out::println);
         // 是否包含符合特定条件的元素
        boolean anyMatch = list.stream().anyMatch(x -> x > 6);

使用filter可以进行筛选

max,min,count

c 复制代码
		List<String> list = Arrays.asList("adnm", "admmt", "pot", "xbangd", "weoujgsd");

		Optional<String> max = list.stream().max(Comparator.comparing(String::length));

max里边是comparator,比较器,传入一个这个就知道怎么比较辣


c 复制代码
List<Integer> list = Arrays.asList(7, 6, 4, 8, 2, 11, 9);

		long count = list.stream().filter(x -> x > 6).count();
		System.out.println("list中大于6的元素个数:" + count);

统计大于6的个数

map的使用

c 复制代码
String[] strArr = { "abcd", "bcdd", "defde", "fTr" };
List<String> strList = Arrays.stream(strArr).map(String::toUpperCase).collect(Collectors.toList());

List<Integer> intList = Arrays.asList(1, 3, 5, 7, 9, 11);
List<Integer> intListNew = intList.stream().map(x -> x + 3).collect(Collectors.toList());

System.out.println("每个元素大写:" + strList);
System.out.println("每个元素+3:" + intListNew);

冷门操作reduce

归纳操作,一般拿来求和 求乘积,求最值

c 复制代码
		List<Integer> list = Arrays.asList(1, 3, 2, 8, 11, 4);
		// 求和方式1
		Optional<Integer> sum = list.stream().reduce((x, y) -> x + y);
		// 求和方式2
		Optional<Integer> sum2 = list.stream().reduce(Integer::sum);
		// 求和方式3
		Integer sum3 = list.stream().reduce(0, Integer::sum);
		
		// 求乘积
		Optional<Integer> product = list.stream().reduce((x, y) -> x * y);

		// 求最大值方式1
		Optional<Integer> max = list.stream().reduce((x, y) -> x > y ? x : y);
		// 求最大值写法2
		Integer max2 = list.stream().reduce(1, Integer::max);

		System.out.println("list求和:" + sum.get() + "," + sum2.get() + "," + sum3);
		System.out.println("list求积:" + product.get());
		System.out.println("list求最大值:" + max.get() + "," + max2);
相关推荐
一个专注写代码的程序媛几秒前
流式读取数据
java·数据结构·算法
Halo_tjn3 分钟前
Java Set集合知识点
java·开发语言·数据结构·windows·算法
廋到被风吹走4 分钟前
【Java】JPA
java·开发语言·oracle
计算机毕设指导67 分钟前
基于微信小程序的设备报修系统【源码文末联系】
java·spring boot·微信小程序·小程序·tomcat·maven·intellij-idea
没有bug.的程序员7 分钟前
服务治理体系:从零到一的全景落地指南
java·开发语言·数据库·微服务·架构
毕设源码-郭学长8 分钟前
【开题答辩全过程】以 基于SpringBoot的足球运动员训练计划管理系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
-Xie-10 分钟前
Redis(十六)——底层数据结构(一)
java·数据结构·redis
海南java第二人10 分钟前
Spring Boot自定义注解深度解析:从入门到实战进阶
java·spring boot·后端
2501_9098008113 分钟前
Java多线程
java·开发语言·多线程
韩立学长16 分钟前
【开题答辩实录分享】以《基于springboot洗衣店管理系统的设计与实现》为例进行选题答辩实录分享
java·spring boot·后端