List<Travel> dateBetWeen = travelMapper.selectList(queryWrapper); Optional<Travel> travelOptional = dateBetWeen.stream().findFirst(); if (travelOptional.isPresent()) { Set<Date> dateSet= LocalDateUtil.getDateListBetweenTwoDate(travelOptional.get().getBeginDate(), travelOptional.get().getEndDate()); 我想取dateBetWeen里面的date的getBeginDate与getEndDate去跟date做比较然后getBeginDate或者getEndDate交集的一个时间段取出来
时间: 2024-02-04 19:02:25 浏览: 136
你可以使用 Java 8 Stream API 的 filter() 方法来筛选符合条件的 Travel 对象,然后再使用 Collectors.toList() 方法转换成 List 集合。例如:
```java
List<Travel> dateBetween = travelMapper.selectList(queryWrapper);
Optional<Travel> travelOptional = dateBetween.stream().findFirst();
if (travelOptional.isPresent()) {
Date beginDate = travelOptional.get().getBeginDate();
Date endDate = travelOptional.get().getEndDate();
Set<Date> dateSet = LocalDateUtil.getDateListBetweenTwoDate(beginDate, endDate);
// 筛选符合条件的 Travel 对象
List<Travel> filteredList = dateBetween.stream().filter(travel -> {
Date travelBeginDate = travel.getBeginDate();
Date travelEndDate = travel.getEndDate();
// 判断 travelBeginDate 和 travelEndDate 是否与 dateSet 有交集
boolean intersect = dateSet.stream().anyMatch(date -> {
return (date.getTime() >= travelBeginDate.getTime() && date.getTime() <= travelEndDate.getTime());
});
return intersect;
}).collect(Collectors.toList());
// 输出结果
for (Travel travel : filteredList) {
System.out.println(travel.getId() + " " + travel.getBeginDate() + " " + travel.getEndDate());
}
}
```
这里我们首先取得了 dateBetween 集合中的第一个 Travel 对象,并根据它的 beginDate 和 endDate 计算出了一个 dateSet 集合,里面包含了这个 Travel 对象的 beginDate 和 endDate 之间的所有日期。
然后我们使用 filter() 方法筛选符合条件的 Travel 对象,条件是这个 Travel 对象的 beginDate 和 endDate 与 dateSet 集合有交集。如果有交集,就将这个 Travel 对象添加到 filteredList 集合中。
最后我们遍历 filteredList 集合并输出结果。
阅读全文