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);
相关推荐
青山师14 分钟前
线程池深度解析:从生产者-消费者模型到工业级调优实践
java·面试题·线程池·多线程·java面试
qq_5895681016 分钟前
封装工具类,JwtUtils令牌工具类
java
漫随流水40 分钟前
创建一个IDEA的Java项目
java·ide·intellij-idea
Hammer_Hans40 分钟前
DFT笔记45
java·jvm·笔记
ABILI .1 小时前
主动类型转换
java
奋斗的老史1 小时前
LangChain4j 进阶实战系列
java·langchain4j·ai应用开发
橙子圆1231 小时前
Redis知识2
java·数据库·redis
callJJ1 小时前
Codex 联动 OpenSpec 提效方法论
java·开发语言·codex·openspec
过期动态1 小时前
【RabbitMQ基础篇】RabbitMQ从入门到实战
java·jvm·数据库·分布式·spring·rabbitmq·intellij-idea
上弦月-编程1 小时前
Java编程:跨平台开发利器
java·开发语言