Lambda常用表达式

看到这个公众号  Java技术前线 ,有所感想,于是把目前工作中常用的几个列出来!

常用表达式:

  • collect(Collectors.toList())  将流转换为list。还有toSet(),toMap()等
  • filter 过滤筛选

  • max和min  在集合中求最大或最小值

  • count  统计,结合filter使用

  • sorted 排序 默认升序

import com.bigdata.bigdata.entity.User;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * @Auther: lirui
 * @Date: 2020/11/1 0:12
 * @Description: Lambda测试
 */
public class TestLambda {

    public static void main(String[] args) {

        List<User> userList = Stream.of(new User("肖战", "男", 30),
                new User("王一博", "男", 24),
                new User("李易峰", "男", 34)).collect(Collectors.toList());
        System.out.println(userList);

        Set<String> stringSet = Stream.of("肖战","王一博","肖战").collect(Collectors.toSet());
        System.out.println(stringSet);

        List<String> names = userList.stream().map(user -> user.getName())
                .collect(Collectors.toList());
        System.out.println(names);

        String nameStr = userList.stream().map(User::getName)
                .collect(Collectors.joining(",","",""));
        System.out.println(nameStr);

        List<User> users=new ArrayList<>();
        users.add(new User("肖战", "男", 30));
        users.add(new User("王一博", "男", 24));
        users.add(new User("李易峰", "男", 34));

        //查询年龄大于25的,年龄升序排序,
        List<User> list = users.stream()
                .filter(stu -> stu.getAge() > 25)
                .sorted(Comparator.comparing(User::getAge))
                .collect(Collectors.toList());
        //[User{name='肖战', sex='男', age=30}, User{name='赵丽颖', sex='女', age=30}, User{name='李易峰', sex='男', age=34}]
        System.out.println(list);

        //查询年龄大于25的,年龄升序排序,根据性别进行分组
        Map<String, List<User>> list1 = users.stream()
                .filter(stu -> stu.getAge() > 25)
                .sorted(Comparator.comparing(User::getAge))
                .collect(Collectors.groupingBy(User::getSex));
        //{女=[User{name='赵丽颖', sex='女', age=30}], 男=[User{name='肖战', sex='男', age=30}, User{name='李易峰', sex='男', age=34}]}
        System.out.println(list1);

        //在第一个字段数据相同的对第二个字段进行比较
        //对age升序,name降序
        List<User> collect = users.stream().filter(stu -> stu.getAge() > 25).sorted(Comparator.comparingInt(User::getAge)
                .thenComparing(Comparator.comparing(User::getName).reversed()))
                .collect(Collectors.toList());
        System.out.println(collect);
        //对age降序,name升序
        List<User> collect1 = users.stream().filter(stu -> stu.getAge() > 25).sorted(Comparator.comparingInt(User::getAge).reversed()
                .thenComparing(Comparator.comparing(User::getName)))
                .collect(Collectors.toList());
        System.out.println(collect1);
        //对age降序,name降序
        List<User> collect2 = users.stream().filter(stu -> stu.getAge() > 25).sorted(Comparator.comparingInt(User::getAge)
                .thenComparing(Comparator.comparing(User::getName)).reversed())
                .collect(Collectors.toList());
        System.out.println(collect2);
        //对age升序,name升序
        List<User> collect3 = users.stream().filter(stu -> stu.getAge() > 25).sorted(Comparator.comparingInt(User::getAge)
                .thenComparing(Comparator.comparing(User::getName)))
                .collect(Collectors.toList());
        System.out.println(collect3);


        Optional<User> max = users.stream()
                .max(Comparator.comparing(stu -> stu.getAge()));
        Optional<User> min = users.stream()
                .min(Comparator.comparing(stu -> stu.getAge()));
        //判断是否有值
        if (max.isPresent()) {
            System.out.println(max.get());
        }
        if (min.isPresent()) {
            System.out.println(min.get());
        }

        long count = users.stream().filter(s1 -> s1.getAge() > 25).count();
        System.out.println("年龄大于25岁的人数是:" + count);


        Predicate<Integer> predicate = x -> x > 24;
        User user = new User("肖战", "男", 30);
        System.out.println("肖战的年龄大于24吗?:" + predicate.test(user.getAge()));
    }
}

后面工作中会出现其他信息,会继续补充的

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值