Я пытаюсь создать расписание, в котором я могу получить только введенное время и название расписания.
Я хотел бы поместить расписание в List
, но если другого расписания нет, в Список следует добавить новое пустое расписание, начиная с 6:00 AM
, если другого раннего времени нет.
У меня есть ObservableList<DataClass>
, оно содержит LocalTime
и немного String
.
Пример 1:
Допустим, список содержит 3 элемента:
[04:00 AM] [Some String]
[06:30 AM] [Some String]
[05:00 PM] [Some String]
Я хочу добавить недостающее время в списке с 4:00 AM
до 5:00 PM
, поэтому список будет:
[04:00 AM] [Some String]
[05:00 AM] [Some String]
[06:30 AM] [Some String]
[07:00 AM] [Some String]
[08:00 AM] [Some String]
[09:00 AM] [Some String]
[10:00 AM] [Some String]
[11:00 AM] [Some String]
[12:00 PM] [Some String]
[01:00 PM] [Some String]
[02:00 PM] [Some String]
[03:00 PM] [Some String]
[04:00 PM] [Some String]
[05:00 PM] [Some String]
Пример 2:
Допустим, список содержит 2 элемента:
[08:30 AM] [Some String]
[02:00 PM] [Some String]
Я хочу добавить недостающее время в списке от 6:00 AM
до 5:00 PM
, поэтому список будет:
[06:00 AM] [Some String]
[07:00 AM] [Some String]
[08:00 AM] [Some String]
[09:00 AM] [Some String]
[10:00 AM] [Some String]
[11:00 AM] [Some String]
[12:00 PM] [Some String]
[01:00 PM] [Some String]
[02:00 PM] [Some String]
[03:00 PM] [Some String]
[04:00 PM] [Some String]
[05:00 PM] [Some String]
Пример 3:
Допустим, список содержит 1 элемент:
[08:00 PM] [Some String]
Я хочу добавить пропущенное время в списке с 6:00 AM
до 8:00 PM
, поэтому список будет.
[06:00 AM] [Some String]
[07:00 AM] [Some String]
[08:00 AM] [Some String]
[09:00 AM] [Some String]
[10:00 AM] [Some String]
[11:00 AM] [Some String]
[12:00 PM] [Some String]
[01:00 PM] [Some String]
[02:00 PM] [Some String]
[03:00 PM] [Some String]
[04:00 PM] [Some String]
[05:00 PM] [Some String]
[06:00 PM] [Some String]
[07:00 PM] [Some String]
[08:00 PM] [Some String]
Время должно начинаться с 06:00 AM
, если нет другого раннего времени, иначе время начнется в это раннее время.
Время должно заканчиваться на 5:00 PM
, если нет другого времени, иначе время закончится в это конкретное время, я хочу добавить только HOUR
, например, increment
час, поэтому не должно быть 6:30
, 5:30
, если он не введен вручную.
Я думаю о следующей логике, но не могу продолжить из-за привязки к идее.
Сортировка базы списка по времени с AM до PM, чтобы получить первый раз
Проверьте, равно ли время первых данных или меньше 6:00 утра
если истина, то начните с того времени и продолжайте добавлять недостающие
время до 17:00 или до последнего раза.
если ложь, то
начать с 6:00 утра и продолжать добавлять недостающее время до 5:00
PM или в последний раз досягаемость.
приведенный ниже код в настоящее время является тем, что у меня есть, и озадачивает.
private void fillTheList(){
ObservableList<DataClass> data = FXCollections.observableArrayList();
Comparator<DataClass> comparator = Comparator.comparing(DataClass::getLocalTime);
data.add(new DataClass(convertTime("05:00 PM"), "Sample Content"));
data.add(new DataClass(convertTime("06:30 AM"), "Sample Content"));
FXCollections.sort(data,comparator); //Sort the list from AM to PM
for (DataClass list : data){
if(list.getLocalTime().isBefore(LocalTime.of(6,0))){
//The time is less than 6:00 AM then it should start here and Add the missing time but I don't know what to do next...
}else{
//the time is not less than 6:00 AM... I don't know what to do next..
}
}
FXCollections.sort(data,comparator); //Sort the list from AM to PM again
}
private LocalTime convertTime(String timeString){
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("hh:mm a");
return LocalTime.parse(timeString, formatter);
}
PS: На самом деле я не уверен, что собираюсь спросить, поэтому не стесняйтесь предлагать правку, если это необходимо.
ОБНОВЛЕНИЕ: DataClass.class
public class DataClass {
private LocalTime localTime;
private String content;
public DataClass(LocalTime localTime, String content){
this.localTime = localTime;
this.content = content;
}
public LocalTime getLocalTime(){
return localTime;
}
public String getContent(){
return content;
}
}