当前位置:   article > 正文

【Java】Stream 流常见写法总结_java stream 返回实体类

java stream 返回实体类

获取集合中某个字段值的集合

  1. List<Long> userIdList = vipOrders.stream()
  2.     .map(VipOrder::getUserId)
  3.     .collect(Collectors.toList());

获取map<T,T> 格式数据

  • // 格式为:{1=1号,2=2号} 后面可以返回实体类functity

  1. // 格式为:{1=1号,2=2号} 后面可以返回实体类functity
  2. Map<Long, String> vipSkuMap = vipSkuList.stream()
  3.    .collect(Collectors.toMap(VipSku::getId, VipSku::getSkuName));
  4. Map<Long, VipSku> vipSkuMap = vipSkuList.stream()
  5.    .collect(Collectors.toMap(VipSku::getId, Function.identity()));
  6. Map<String, BackcalProgramDimension> dimensionMap = programDimensionList
  7.     .stream()
  8.     .collect(Collectors.toMap(k -> k.getOrganizationId() + "|" + k.getRoleId() , v->v));   
  9. List<DropResponse> respList = list.stream()
  10.     .map(b -> new DropResponse(b.getId(), b.getBusinessName()))
  11.     .collect(Collectors.toList());

组成新的集合返回(BeanUtils.copyProperties)

  1. List<VipOrderDetailResponse> list = vipOrders.stream().map(vipOrder -> {
  2. VipOrderDetailResponse response = new VipOrderDetailResponse();
  3.     BeanUtils.copyProperties(vipOrder, response);
  4.     response.setCashFee(new BigDecimal(vipOrder.getCashFee()));
  5.     response.setAmount(new BigDecimal(vipOrder.getAmount()));
  6.     return response;
  7. }).collect(Collectors.toList());

判断值是否在集合中

  • // 判断考核期是否存在考核期表内

  1. // 判断考核期是否存在考核期表内
  2. boolean isExitPeriod = periodList.stream()
  3.     .map(Period::getPeriod)
  4.     .collect(Collectors.toList()).contains(period);

过滤掉条件为false的,只保留为true的

  • // 最后面还可以加上 .orElse(null) 意思是:如果对象为空,则返回orElse括号里的内容。filter里面可以有多个条件使用&

  1. Optional<CalculationConstantHistory> calculationConstantItem = calculationConstantList.stream()
  2.     .filter(item -> item.getConstantId().equals(calculationConstant.getConstantId()))
  3.     .findFirst();
  4. // 最后面还可以加上 .orElse(null) 意思是:如果对象为空,则返回orElse括号里的内容。filter里面可以有多个条件使用&
  5. // 判断上面对象是否存在
  6. if (calculationConstantItem.isPresent()) {
  7.     // 业务逻辑
  8. }

list 对象属性进行去重,并排序返回新的集合

  • Collectors.collectingAndThen 的第二个参数 ArrayList::new 收集起来的集合然后调用第一个参数的去重方法,然后返回新的集合。

  • treeSet 就是用比较器来进行排序去重,如果 compareTo 返回0,说明是重复的,返回的是自己的某个属性和另一个对象的某个属性的差值,如果是负数,则往前面排,如果是正数,往后面排,是一个循环比较的过程,一旦有一个相等,就不再比较。

  1. List<Student> studentList = new ArrayList<>();
  2. studentList.add(new Student("111", 132774, 12, "1"));
  3. studentList.add(new Student("123", 13556, 15, "1");
  4. studentList.add(new Student("1146", 13165142, 16, "1"));
  5. studentList.add(new Student("111", 132774, 14, "2"));
  6. studentList.add(new Student("141321", 5641542, 15,"2"));
  7. studentList.add(new Student("1454135", 2222542, 15, "2"));
  8. List<Student> collect = studentList.stream().collect(
  9.     Collectors.collectingAndThen(
  10.         Collectors.toCollection(
  11.             () -> new TreeSet<>(Comparator.comparing(Student::getStuName))),ArrayList::new));
  12. System.out.println(collect);
  13. System.out.println(collect.size()); // 输出结果是五条

list对象某属性值去重,并返回该值集合

  • //方案上所有去重后的组织

  1. List<String> orgIdList = programDimensionList.stream()
  2.     .map(BackcalProgramDimension::getOrganizationId)
  3.     .distinct()
  4.     .collect((Collectors.toList());

未完待续(遇到别的话,再总结)

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号