java判断list根据身份证、姓名、建设开始时间和建设结束时间筛选出同一个人在同一个时间段内在不同项目出现的情况
时间: 2024-10-23 12:03:00 浏览: 8
在Java中,为了根据身份证、姓名、建设开始时间和建设结束时间筛选出一个人在同一时间段内出现在不同项目的列表,你需要创建一个数据结构来存储这些信息,比如`PersonProject`类,包含身份证、姓名、项目名、开始时间和结束时间属性。然后,你可以遍历整个List,比较每个元素是否满足条件。
以下是一个简单的步骤描述:
1. 定义一个`PersonProject`类:
```java
public class PersonProject {
private String idCard;
private String name;
private String projectName;
private Date startDate;
private Date endDate;
// 构造函数,getter和setter
}
```
2. 创建一个方法来过滤列表:
```java
import java.util.ArrayList;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.List;
public List<PersonProject> filterProjects(List<PersonProject> projects, String idCard, String name) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
List<PersonProject> result = new ArrayList<>();
for (PersonProject project : projects) {
if (project.getIdCard().equals(idCard) && project.getName().equals(name)) {
Date projStartDate = dateFormat.parse(project.getStartDate());
Date projEndDate = dateFormat.parse(project.getEndDate());
boolean withinTimePeriod = isWithinTimePeriod(projStartDate, projEndDate, /* 另外一个日期范围变量 */);
if(withinTimePeriod) {
result.add(project);
}
}
}
return result;
}
private boolean isWithinTimePeriod(Date startDate, Date endDate, Date timePeriodStartEnd) {
// 比较两个日期范围,这里假设timePeriodStartEnd是一个包含开始时间和结束时间的对象
return startDate.after(timePeriodStartEnd.getStartDate()) &&
endDate.before(timePeriodStartEnd.getEndDate());
}
```
3. 调用方法并处理结果:
```java
// 假设projects是你的PersonProject列表
List<PersonProject> filteredProjects = filterProjects(projects, "身份证号", "姓名");
```
阅读全文