list实体类(实体类中有时间区间字段)筛选数据规则:1:当前时间在日期区间内,如有多条取任一条2:如果没有包含当前日期的区间的数据,取未来最近一条数据,如果同事存在历史的数据且未来最近一条的开始时间在在当前日期的七天内则取未来这一条如果七天内没有就去最近的一条历史记录
时间: 2024-05-10 10:20:05 浏览: 70
筛选某日之前的记录
以下是list实体类的示例代码,其中包含一个时间区间字段:
```java
public class ListEntity {
private String name;
private Date startTime;
private Date endTime;
// 构造函数、getter和setter方法省略
}
```
根据上述筛选数据规则,可以编写如下代码来实现:
```java
public ListEntity filterData(List<ListEntity> dataList) {
Date currentDate = new Date();
// 首先找到当前日期包含在内的数据
List<ListEntity> currentList = new ArrayList<>();
for (ListEntity entity : dataList) {
if (entity.getStartTime().before(currentDate) && entity.getEndTime().after(currentDate)) {
currentList.add(entity);
}
}
// 如果有多条符合条件的数据,取任意一条
if (!currentList.isEmpty()) {
return currentList.get(0);
}
// 如果没有符合条件的数据,找到未来最近的一条数据
List<ListEntity> futureList = new ArrayList<>();
List<ListEntity> pastList = new ArrayList<>();
for (ListEntity entity : dataList) {
if (entity.getEndTime().before(currentDate)) {
pastList.add(entity);
} else {
futureList.add(entity);
}
}
if (!futureList.isEmpty()) {
// 找到未来最近的一条数据
ListEntity closestEntity = futureList.get(0);
for (ListEntity entity : futureList) {
if (entity.getStartTime().before(closestEntity.getStartTime())) {
closestEntity = entity;
}
}
if (closestEntity.getStartTime().before(DateUtils.addDays(currentDate, 7))) {
// 如果未来最近的一条数据的开始时间在当前日期的七天内,取未来这一条
return closestEntity;
} else {
// 如果未来最近的一条数据的开始时间在当前日期的七天之后,取最近的一条历史记录
if (!pastList.isEmpty()) {
ListEntity closestPastEntity = pastList.get(0);
for (ListEntity entity : pastList) {
if (entity.getEndTime().after(closestPastEntity.getEndTime())) {
closestPastEntity = entity;
}
}
return closestPastEntity;
} else {
// 如果没有历史记录,返回null
return null;
}
}
} else {
// 如果没有未来的数据,取最近的一条历史记录
if (!pastList.isEmpty()) {
ListEntity closestPastEntity = pastList.get(0);
for (ListEntity entity : pastList) {
if (entity.getEndTime().after(closestPastEntity.getEndTime())) {
closestPastEntity = entity;
}
}
return closestPastEntity;
} else {
// 如果没有历史记录,返回null
return null;
}
}
}
```
该方法需要传入一个List<ListEntity>类型的数据列表,返回一个ListEntity类型的数据。如果存在符合条件的数据,则返回任意一条;否则根据规则找到最近的一条数据返回。如果找不到符合条件的数据或历史数据,则返回null。
阅读全文