Java stream使用

1.分组

通过groupingBy分组指定字段

list.stream().collect(Collectors.groupingBy(User::getSex));

2.过滤

通过filter方法过滤某些条件(判断某个字段等于或者不等于某个值)

list.stream().filter(a -> !a.getJobNumber().equals(“201901”)).collect(Collectors.toList());

这里需要设定一个新的lst用来接收!不会在原来的基础上修改

3.求和

基本类型:先mapToInt,然后调用sum方法

List.stream().mapToInt(User::getAge).sum();

大数类型:reduce调用BigDecimal::add方法

List.stream().map(User::getFamilyMemberQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);

4.最值

最大值

List.stream().map(User::getEntryDate).max(Date::compareTo).get();

最小值

List.stream().map(User::getEntryDate).min(Date::compareTo).get();

5.排序

list.stream().sorted((o1, o2)->o1.getItem().getValue().

compareTo(o2.getItem().getValue())).

collect(Collectors.toList());

sort()
       单字段排序,根据id排序	list.sort(Comparator.comparing(Obj::getItem));
   多字段排序,根据id,年龄排序	list.sort(Comparator.comparing(Obj::getItem).thenComparing(Obj::getItem));

6.去重

通过distinct方法

List.stream().distinct().collect(Collectors.toList());

对属性

重写方法

7.获取list某个字段组装新list

List.stream().map(a -> a.getId()).collect(Collectors.toList());

Java StreamJava 8 中新增的一个 API,用于处理集合数据。它提供了一种更加简洁、高效的方式来操作集合,可以让代码更加简洁、易读、易维护。下面是 Java Stream 的基本使用方法: 1. 创建流 Java Stream 可以从多种数据源中创建,比如集合、数组、文件等。例如,从集合创建一个 Stream 可以使用以下代码: ```java List<String> list = new ArrayList<>(); Stream<String> stream = list.stream(); ``` 2. 中间操作 中间操作是指对 Stream 进行操作,返回一个新的 Stream。常见的中间操作包括:filter、map、sorted、distinct 等。例如,下面的代码使用 filter 操作过滤出长度大于 5 的字符串: ```java List<String> list = Arrays.asList("apple", "banana", "orange", "watermelon"); Stream<String> stream = list.stream().filter(s -> s.length() > 5); ``` 3. 终止操作 终止操作是指对 Stream 进行最终的操作,返回一个非 Stream 的结果。常见的终止操作包括:forEach、reduce、collect、count 等。例如,下面的代码使用 forEach 操作输出过滤后的字符串: ```java List<String> list = Arrays.asList("apple", "banana", "orange", "watermelon"); list.stream().filter(s -> s.length() > 5).forEach(System.out::println); ``` 4. 短路操作 短路操作是指对 Stream 进行操作时,只要满足一定条件就可以停止操作,必对整个流进行操作。常见的短路操作包括:findFirst、findAny、allMatch、anyMatch、noneMatch 等。例如,下面的代码使用 findAny 操作找到第一个长度大于 5 的字符串: ```java List<String> list = Arrays.asList("apple", "banana", "orange", "watermelon"); Optional<String> result = list.stream().filter(s -> s.length() > 5).findAny(); ``` 以上就是 Java Stream 的基本使用方法,需要注意的是,Stream 是一次性的,一旦进行了终止操作,就能再对该 Stream 进行操作。同时,Stream 也是惰性求值的,只有在终止操作时才会进行真正的计算。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值