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());

 

posted @ 2020-07-09 15:30  摩尔迦娜  阅读(437)  评论(0)    收藏  举报