Stream流常用操作
Stream是个好东西,用完之后感觉以前写的一堆判断什么的真的太臃肿了。
随便记录点用到的操作。
把一个LIST中对象某个字段值重复的合并只去一个值,例子id重复
ArrayList<ProductProcessDrawbackDto> collect = records1.stream().collect(Collectors.collectingAndThen( Collectors.toCollection(() -> new TreeSet<>( Comparator.comparing( ProductProcessDrawbackDto::getId))), ArrayList::new));
判断一个逗号分隔的字符串,统计其中值为1的个数
int i = Arrays.asList(answers.split(",")).stream().filter(result-> result.equals("1")).collect(Collectors.toList()).size();
根据一个字段分组,并统计个数
Map<Integer, Long> collect = records.stream().collect(Collectors.groupingBy(CollectionEnhance::getEpochId, Collectors.counting()));
把一个list参数抽取出来,生成一个新的对象或MAP,并对内容进行为空判断,最后进行排序
List<Map<String, Object>> collect1 = list.stream().map(e -> { Map<String, Object> map = new HashMap<>(); map.put("epochId", e.getCommonId()); map.put("collNum", collect.get(e.getCommonId())); map.put("epochName", e.getCommonTotle()); return map; }).filter(s -> s.get("collNum") != null).sorted(Comparator.comparing(e->Integer.parseInt(e.get("epochId").toString()))).collect(Collectors.toList());