前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

Stream

原创
作者头像
大西瓜
发布2023-07-18 16:54:40
2900
发布2023-07-18 16:54:40
举报
文章被收录于专栏:大西瓜的Java专栏

Stream常用的一切操作

一种类型转另一种
代码语言:javascript
复制
List<HmsAdviceRecord> records = hmsAdviceRecordService.list(new LambdaQueryWrapper<HmsAdviceRecord>().in(HmsAdviceRecord::getRelationCode, collect));
List<HmsAdviceRecordVo> redList =JSON.parseArray(JSON.toJSONString(records), HmsAdviceRecordVo.class);
根据对象泛型的某一个字段去重
代码语言:javascript
复制
List<HmsPlanDetail> collect =
list.stream().
collect(Collectors.collectingAndThen(Collectors.
toCollection(() -> new TreeSet<>(Comparator.comparing(HmsPlanDetail::getDoctorId))), ArrayList::new));
List转成Map数据(key : value)
代码语言:javascript
复制
List<Map<String, Object>> mapList = collect.stream().map((h) -> {
Map<String, Object> map = new HashMap<>();
map.put("id", h.getDoctorId());
map.put("value", h.getDoctorName());
return map;
}).collect(Collectors.toList());
Filter过滤操作
代码语言:javascript
复制
filter(f -> f.getStatus().equals(InpatientStatus.ING))
根据某组特定数据分类分类完成后变Map集合
代码语言:javascript
复制
List<HmsAdviceRecordVo> redList = JSON.parseArray(JSON.toJSONString(records), HmsAdviceRecordVo.class);
Map<String, List<HmsAdviceRecordVo>> listMap = redList.stream().collect(Collectors.groupingBy(HmsAdviceRecordVo::getBed));
遍历替换操作取代传统的if比较
代码语言:javascript
复制
hmsDrugProjects.stream()
.filter(d -> e.getProjectId().equals(d.getId()))
.findFirst()  
.ifPresent(d -> e.setFormat(d.getFormat()));
});
//方法查找第一个满足条件的元素,并将其封装在Optional对象中。
//最后,如果Optional对象中存在元素,则使用.ifPresent()方法将该元素的格式设置为变量"e"的格式。
Peek中间操作
代码语言:javascript
复制
voList = voList.stream().peek(record -> {
Optional<HmsInpatient> inpatient = list.stream()
.filter(hmsInpatient -> record.getRelationCode().equals(hmsInpatient.getInpatientCode()))
.findFirst();
inpatient.ifPresent(hmsInpatient -> {
record.setName(hmsInpatient.getName());
record.setAge(hmsInpatient.getAge());
record.setBed(hmsInpatient.getBed());
record.setWards(hmsInpatient.getWards());
});
}).collect(Collectors.toList());

voList = voList.stream().peek(e -> {
Optional<HmsAdviceDrug> drug = drugs.stream()
.filter(d -> e.getId().equals(d.getAdviceId()))
.findFirst();
drug.ifPresent(d -> e.setNum(d.getNum()));
}).collect(Collectors.toList());

//这段代码使用了Java 8中的Stream API来对一个列表进行操作。
//首先,它使用了stream()方法将列表转换为一个流,
//然后使用peek()方法对每个元素进行操作,而不改变流中的元素。
//在第一个peek()中,它使用了filter()方法来过滤出与当前元素关联代码相同
//的HmsInpatient对象,然后使用findFirst()方法获取第一个匹配的对象。
//如果找到了匹配的对象,它会使用ifPresent()方法对该对象进行操作,
//将其名称、年龄、床位和病房设置为当前元素的相应属性。
//在第二个peek()中,它使用了类似的方法来过滤出与当前元素ID相同的HmsAdviceDrug对象,
//然后将其数量设置为当前元素的相应属性。最后,它使用collect()方法将流转换回列表并将其赋值给voList变量。
Of操作多个字段判断拼接
代码语言:javascript
复制
operationApplyReqs.forEach((e) -> {
e.setGeneralTerm(Stream.of(e.getOperationNameOne(), e.getOperationNameTwo(), e.getOperationNameThree(), e.getOperationNameFour())
.filter(Objects::nonNull)
.collect(Collectors.joining()));
e.setGeneralTermOfParts(Stream.of(e.getPositionOne(), e.getPositionTwo(), e.getPositionThree())
.filter(Objects::nonNull)
.collect(Collectors.joining()));
});

//Stream.of方法将元素的属性转换为一个流,filter方法过滤掉空值,
//Collectors.joining方法将非空值连接成一个字符串。

Calendar日期操作

代码语言:javascript
复制
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");// 多态
Calendar calendar = Calendar.getInstance();
calendar.setTime(req.getInHospitalTime());
calendar.add(Calendar.DAY_OF_MONTH, -1);
Date dayDeFore = calendar.getTime();
//前一天日期
String before = df.format(dayDeFore);

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Stream常用的一切操作
    • 一种类型转另一种
      • 根据对象泛型的某一个字段去重
        • List转成Map数据(key : value)
          • Filter过滤操作
            • 根据某组特定数据分类分类完成后变Map集合
              • 遍历替换操作取代传统的if比较
                • Peek中间操作
                  • Of操作多个字段判断拼接
                  • Calendar日期操作
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档