lambda强大的功能(分页、过滤、排序、减少代码量等等)

如需转载分享,请标明出处,且不用于盈利为目的,谢谢合作!

lambda强大的功能(分页、过滤、排序、减少代码量等等)

情景1.获取某个集合(students)中对象(Student)的某个属性(id)值的集合

List<Student> students = 数据库查的数据;
List ids= students.stream().map(Student::getId).collect(Collectors.toList());

情景2.lambda分页

int pageIndex = queryShowNodeDataDto.getPageNum();//当前页 前端传
int pageSize = queryShowNodeDataDto.getPageSize();//每页显示条数 前端传
int total = (int)tableData.stream().filter(s->!s.isEmpty()).count();//总条数
List<Map<String, Object>> collect = tableData.stream().skip(pageSize * (pageIndex - 1)).limit(pageSize).collect(Collectors.toList());//数据
customPage.setDatalist(collect);//数据 传给前端
customPage.setTotal(total);//总条数 传给前端
customPage.setPageSize(pageSize);//每页显示条数 传给前端
customPage.setPageNum(pageIndex);//当前页 传给前端

情景3.lambda对集合排序

List<Student> students = 数据库查的数据;//需要排序的集合
List<Student> desc = students.stream().sorted(Comparator.comparing(Student::getCreatedTime).reversed()).collect(Collectors.toList());//降序排序
List<Student> asc = students.stream().sorted(Comparator.comparing(Student::getCreatedTime)).collect(Collectors.toList());//降序排序

情景4.对集合模糊查询

List<Student> students = 数据库查的数据;//需要模糊查询的集合
List<Student> select = students.stream().filter(item->item.getName().contains(StringUtils.isNotBlank(name)? name:"")).collect(Collectors.toList());//根据名字模糊查询

情景5.对集合排序并模糊查询

List<Student> students = 数据库查的数据;//需要排序并模糊查询的集合
List<Student> desc = students.stream().filter(item->item.getName().contains(StringUtils.isNotBlank(name)? name:"") ).sorted(Comparator.comparing(Student::getCreatedTime).reversed()).collect(Collectors.toList());

情景6.数组字母小写变大写

List list= Arrays.asList(“a”, “b”, “c”, “d”);
List collect =list.stream().map(String::toUpperCase).collect(Collectors.toList());

情景7.数组所有元素,按某种规律计算

List num = Arrays.asList(1,2,3,4,5);
List collect1 = num.stream().map(n -> n * 2).collect(Collectors.toList());

情景8.以某个属性来分组,例如,以id分组,将id相同的放在一起

public class Test {
    @Data
    @AllArgsConstructor
    static class Fruits{
        private String id;//id
        private String name;//名字
    }
    public static void main(String[] args){

        List<Fruits> fruits = new ArrayList<>();
        fruits.add(new Fruits("1","one apple"));
        fruits.add(new Fruits("1","two apple"));
        fruits.add(new Fruits("2","one banana"));
        fruits.add(new Fruits("2","two banana"));

        //分组
        //以某个属性来分组,例如,以id分组,将id相同的放在一起
        Map<String,List<Fruits>> groupById = fruits.stream().collect(Collectors.groupingBy(Fruits::getId));
        System.out.println(groupById);
    }
}

情景9.List<Map<String,Object>>获取map中某个key的值集合

List<Map<String,Object>> maps = new ArrayList<>();
List<String> ids = maps.stream().map(map -> (String) map.get("id")).collect(Collectors.toList());
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值