Lambda 对集合一顿怼
lambda表达式用法
前言,怎么说,用lambda一时爽,一直用一直爽
操作1. 对集合去重
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.对集合中的元素操作,生成另外一个集合
List<St4SysSb> st4SysSbs2 = st4SysSbMapper.getByType(2);
List<St4SysSb> collect2 = st4SysSbs2.stream().map(e -> e.setTitle(e.getSb008())).collect(Collectors.toList());
操作4.过滤集合中某个字符开头的元素
//2.查到所有的业务表名称,初始化业务工作表(遍历插入)
List<String> businessTableName = tableName.stream().filter(a -> !a.startsWith("sys")).collect(Collectors.toList());
操作5.获取集合中某个元素属性最大值的元素
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 表示循环的每个元素