我需要将一个 ArrayList 数据集转换为另一个 ArrayList 数据集。我需要将“原始数据”转换为下面的“需要的结果”。基本上,我有日期和时间的时间块,需要查看哪些数据集在同一日期的同一时间范围内并保存。不幸的是,算法真的不是我的强项。有什么想法吗?
日期是字符串。对不起,如果我之前没有澄清。
selectedTimeSlotTracker data:
{
("2020-03-04",4,"10:00", "10:30"),
("2020-03-04",5,"10:30", "11:00"),
("2020-03-04",8,"12:00", "12:30"),
("2020-03-04",9,"12:30", "13:00"),
("2020-03-05",8,"12:00", "12:30"),
("2020-03-05",9,"12:30", "13:00")
}
summaryObjects:
{
("2020-03-04","10:00", "11:00"),
("2020-03-04","12:00", "13:00"),
("2020-03-05","12:00", "13:00")
}
private void transformSelectedToSummaryObjects(){
summaryObjects.clear();
int indexOfSummaryObjects = 0;
for (int i = 0; i < selectedTimeSlotTracker.size(); i++ ){
summaryObjects.add(new SummaryObject(selectedTimeSlotTracker.get(i).getDate(), selectedTimeSlotTracker.get(i).getStartTIme(), selectedTimeSlotTracker.get(i).getEndTime()));
for (int j = i; j < selectedTimeSlotTracker.size()-1; j++){
if (selectedTimeSlotTracker.get(j).getDate().equals(selectedTimeSlotTracker.get(j+1).getDate())){
if(selectedTimeSlotTracker.get(j).getEndTime().equals(selectedTimeSlotTracker.get(j+1).getStartTIme())) {
summaryObjects.get(indexOfSummaryObjects).setEndTime(selectedTimeSlotTracker.get(j+1).getEndTime());
i = j + 1;
}
}
}
indexOfSummaryObjects++;
}
courtReservationSummaryAdapter.notifyDataSetChanged();
}
这是我的尝试。不幸的是,它不会创建干净的休息时间,只是将不同日期的结束时间归为同一日期。
下面是我用我的 summaryObjects arraylist 方法得到的数据集,这是错误的。
{(2020-03-04,"10:00", "13:00")}
当我回来时会发布更多信息。