发布时间: 阅读量

Lambda 对集合一顿怼

lambda表达式用法

前言,怎么说,用lambda一时爽,一直用一直爽


操作1. 对集合去重

wei-xin-tu-pian-_20190730164556

  List<SurveyTableInfoVO> distinctList = list.stream().collect(//list是需要去重的list,返回值是去重后的list
                    Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getId()))),//o代表object对象,o.list对象的属性值,根据此属性值去重
                            ArrayList::new));

操作2.对集合按照某个元素的属性排序

List<SurveyTableInfoVO> newList = distinctList.stream().sorted(Comparator.comparing(SurveyTableInfoVO::getSort)).collect(Collectors.toList());

操作3.对集合中的元素操作,生成另外一个集合

wei-xin-tu-pian-_20190730174101

 List<St4SysSb> st4SysSbs2 = st4SysSbMapper.getByType(2);
        List<St4SysSb> collect2 = st4SysSbs2.stream().map(e -> e.setTitle(e.getSb008())).collect(Collectors.toList());

操作4.过滤集合中某个字符开头的元素

wei-xin-tu-pian-_20190730175802

//2.查到所有的业务表名称,初始化业务工作表(遍历插入)
            List<String> businessTableName = tableName.stream().filter(a -> !a.startsWith("sys")).collect(Collectors.toList());

操作5.获取集合中某个元素属性最大值的元素

wei-xin-tu-pian-_20190730180412

     Optional<SysStatistic> userOp = sysStatistics.stream().max(Comparator.comparingInt(SysStatistic::getSsStep));
            SysStatistic sysStatistic = userOp.get();

操作6.最简便的遍历集合并输出

    List<String> list  = new ArrayList<>();
        list.add("name");
        list.add("name");
        list.forEach(System.out::println);

操作7.对集合求和或者拼接


List<String> list = Arrays.asList("0", "1", "2", "3");
        String count = list.stream().reduce("", (acc, item) -> acc + item);
        System.out.println(count);

reduce 函数的一个参数为循环的初始值,这里计算累加时初始值为 0,acc 代表已经计算的结果,item 表示循环的每个元素