lambda表达式常用语法

1.先创建一个测试用的User类,采用builder模式 

package com.example.demo.models;

import lombok.Builder;
import lombok.Getter;

@Builder
@Getter
public class User {

    public long id;

    public String name;

    public int age;

    public String job;

}

2.编写测试类 

package com.example.demo;

import com.example.demo.models.User;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.*;
import java.util.stream.Collectors;

@SpringBootTest
class DemoApplicationTests {

    @Test
    void contextLoads() {
    }

    static List<User> list = new ArrayList();

    static {
        list.add(User.builder().id(1).name("赵一").age(20).job("teacher").build());
        list.add(User.builder().id(2).name("钱二").age(30).job("policeman").build());
        list.add(User.builder().id(3).name("孙三").age(40).job("teacher").build());
        list.add(User.builder().id(4).name("李四").age(50).job("policeman").build());
        list.add(User.builder().id(5).name("周五").age(60).job("teacher").build());
        list.add(User.builder().id(6).name("吴六").age(60).job("policeman").build());
        list.add(User.builder().id(7).name("郑七").age(70).job("teacher").build());
        list.add(User.builder().id(8).name("王八").age(80).job("teacher").build());
        list.add(User.builder().id(9).name("冯九").age(90).job("policeman").build());
        list.add(User.builder().id(10).name("陈十").age(100).job("teacher").build());
    }

    @Test
    void lambdaTest() {

        //分组
        //按用户职业分组
        Map<String, List<User>> groupList = list.stream().collect(Collectors.groupingBy(User::getJob));

        //过滤
        //获取年龄大于53岁的人
        List<User> filterList = list.stream().filter(u -> u.getAge() > 53).collect(Collectors.toList());

        //map
        //获取所有有用户的id
        List<Long> mapList = list.stream().map(User::getId).collect(Collectors.toList());

        //排序
        //通过sort对单字段多字段进行排序
        //正序
        list.sort(Comparator.comparing(User::getAge));
        //倒序
        list.sort(Comparator.comparing(User::getAge, ((o1, o2) -> o2.compareTo(o1))));
        //先按年龄正序,在按id倒序
        list.sort(Comparator.comparing(User::getAge).thenComparing(User::getId, ((o1, o2) -> o2.compareTo(o1))));
        //获取用户id并倒序排序
        List<Long> idList = list.stream().map(User::getId).sorted(((o1, o2) -> o2.compareTo(o1))).collect(Collectors.toList());

        //去重
        //通过distinct 按job去重
        List<String> distincList = list.stream().map(User::getJob).distinct().collect(Collectors.toList());

        //求和
        int sum = list.stream().mapToInt(User::getAge).sum();

        //最值
        int minage = list.stream().map(User::getAge).min(Integer::compareTo).get();
        int maxage = list.stream().map(User::getAge).max(Integer::compareTo).get();

        //循环
        list.stream().forEach(u -> u.job = "IT");

        //获取键值对
        Map<String, String> map = new HashMap<>();
        map.put("张三", "20");
        map.put("李四", "30");
        map.entrySet().forEach(t -> {
            System.out.println(t.getKey() + "," + t.getValue());
        });
    }


}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值