Java 代码和使用steam流(List对象使用流操作示例,Java正则匹配,获取当前操作系统)

list 转list

List cdids = deviceId.stream().map(s -> UUID.fromString(s.trim())).collect(Collectors.toList());

list对象分组

Map> map = elecMonthStatementTemplates.stream().collect(Collectors.groupingBy(ElecMonthStatementTemplate::getElecTableName));

object转对象

ObjectMapper objectMapper = new ObjectMapper();

UserModel userModel = objectMapper.convertValue(claims, UserModel.class);

遍历list替换指定的值

  • for (DropofpressureVo list : s) {
  • DropofpressureVo vo=new DropofpressureVo();
  • List collect = list.getList().stream().map(str -> str.contains("-") ? "-" : str).collect(Collectors.toList());
  • vo.setList(collect);
  • vo.setTime(list.getTime());
  • vo.setName(list.getName());
  • w.add(vo);
  • }

Java  使用正则匹配

  • public static void main(String[] args) {
  • String str = "10.0*0.067+247.0*0.1283+(1.24+1.2+1.2+0+0+19+3013.2+0.25+0.45+0.0005*1000+0.32+704.6+0.35+490.66+0.5+0.4+0.49+0.55+0.305+0.3+0.22+0.26+0.31+0.26+0.15+0.1+3.6+6.0+0.3+85.44+0.35+0.31+0.62)*(862+249+(726+0+2296)*1/12)/(0+862+249+726+2296+17496+0)+(694.3+0.24+0.34)*0.0591+(0+9590+0+0+0+9396+0+1699.6+765+360.6+359+441.1+0.56+0.24+490.4+484.9+0.36+121.28)*0.1233+2.2+13.2+0+(0.36+121.28)*0.1522";
  • String regex = "\\(([^\\(\\)]+)\\)";
  • Pattern pattern = Pattern.compile(regex);
  • Matcher matcher = pattern.matcher(str);
  • List list = new ArrayList<>();
  • while (matcher.find()) {
  • list.add(matcher.group(1));
  • }
  • for (String val : list) {
  • System.out.println("val = " + val);
  • }
  • }

从list中查找对应的值

  • Optional cartOptional = zuodouTaskItems.stream().filter(item -> item.getId().equals(record.getItemsId())).findFirst();
  • if (cartOptional.isPresent()) {
  • // 存在
  • ZuodouTaskItem zuodouTaskItem = cartOptional.get();
  • record.setQty(new BigDecimal(zuodouTaskItem.getQty()));
  • record.setRQty(new BigDecimal(zuodouTaskItem.getRQty()));
  • record.setIId(zuodouTaskItem.getIId());
  • } else {
  • // 不存在
  • }

获取操作系统

System.getProperty("os.name").toUpperCase().indexOf("WINDOWS") != -1

List对象拿指定属性

List asIdList = zuodouTaskDatasArrayList.stream() .map(ZuodouTaskDatas::getAsId) // 使用map方法提取属性值.collect(Collectors.toList());

根据civerid分组统计

  • Map> collect = zuodouCourseManagements.stream().collect(Collectors.groupingBy(ZuodouCourseManagement::getCourseCoverId));

我一个list对象需要根据 chapterName ,chapterOrder 两个属性分组 返回 [ {chapterName :第一 ,chapterOrder :1 , datas:[ List ] } , {chapterName :第二 ,chapterOrder :2 , datas:[ List ] } ]

  • List> result = zuodouCourseManagementVos.stream()
    • .sorted(Comparator.comparing(ZuodouCourseManagementVo::getChapterOrder))
      • .collect(Collectors.groupingBy(ZuodouCourseManagementVo::getChapterName))
      • .entrySet().stream()
      • .map(entry -> {
        • Map group = new HashMap<>();
          • group.put("chapterName", entry.getKey());
          • group.put("chapterOrder", entry.getValue().get(0).getChapterOrder());
          • group.put("datas", entry.getValue());
        • return group;
  • }).collect(Collectors.toList());
  • 首先使用 sorted 方法对 zuodouCourseManagementVos 进行排序,按照 chapterOrder 属性进行升序排序。然后,使用 groupingBy 方法按照 chapterName 将列表分组。接着,使用 entrySet 方法获取分组后的 Map 的键值对集合,并使用 stream 进行处理。对于每个键值对,我们创建一个新的 Map 对象 group,并将 entry.getKey()(即 chapterName)作为键,entry.getValue().get(0).getChapterOrder()(即第一个元素的 chapterOrder)作为值。然后,将分组的数据列表 entry.getValue() 作为 datas 的值。最后,收集这些 Map 对象到一个列表中。这样,你将获得一个列表 result,其中每个元素都包含 chapterName、chapterOrder 和对应的数据列表。

根据指定属性返回匹配值

List matchedElements = zuodouCourseManagementVos.stream() .filter(vo -> vo.getChapterName().equals(targetChapterName) && vo.getChapterOrder() == targetChapterOrder) .collect(Collectors.toList());

你可能感兴趣的:(java,steam流,简洁代码,java,开发语言)