Обход списка объектов в Java - PullRequest
0 голосов
/ 25 сентября 2019

Прежде всего, я очень плохо знаком с Java, поэтому, если мой вопрос не полон деталей, пожалуйста, извините.Я действительно прошел через несколько тем на SO, хотя были некоторые близкие, я не понимал их или не мог изменить их в соответствии с моими потребностями.Итак, вот вопрос, ниже приведен список объектов, которые я получаю из репо.

[ { "esId": 3, "exam": { "examId": 1, "name": "Final Exam", "startDate": "2019-04-15", "endDate": "2019-04-24", "resultReleaseDate": "2019-04-30 07:00:00" } }, { "esId": 44, "exam": { "examId": 15, "name": "Mid Term II", "startDate": "2019-09-20", "endDate": "2019-09-25", "resultReleaseDate": "2019-09-25 18:32:02" }, "essList": [ { "esdId": 74, "subject": { "subjectId": 1, "name": "Math" }, "exDate": "2019-09-20", "startTime": "19:03", "maxMarks": 10, "endTime": "19:03" }, { "esdId": 77, "subject": { "subjectId": 2, "name": "Science" }, "exDate": "2019-09-21", "startTime": "19:03", "maxMarks": 10, "endTime": "19:03" }, { "esdId": 79, "subject": { "subjectId": 3, "name": "English" }, "exDate": "2019-09-20", "startTime": "19:04", "maxMarks": 10, "endTime": "19:04" } ] } ] Из приведенного выше списка я хочу вернуть первый объект, чей endDate больше now илиtoday

Я попытался сделать следующим образом

ArrayList<ExamStandard> examList = new ArrayList<ExamStandard>();
LocalDate today = LocalDate.now();
        String date = today.toString();
        for(int i = 0; i < examList.size(); i++)
        {
            if(examList.get(i).equals(exam) == date){

            }
        }

Это начало выдавать ошибку типов преобразования.Не уверен, как это сделать, если кто-нибудь может мне помочь и объяснить, как это сделать и что происходит, было бы очень полезно.

Любая помощь приветствуется, спасибо Vikram

1 Ответ

0 голосов
/ 25 сентября 2019

Позвольте мне предположить, что вы достигли своего exDate, и он находится в строковом формате.

Прежде всего, выполните следующее

String sDate1="31/12/1998";  
    Date date1=new SimpleDateFormat("dd/MM/yyyy").parse(sDate1);  
    System.out.println(sDate1+"\t"+date1); 

date1 теперь в форматеДата

Позже вы можете использовать предопределенные методы даты, как указано ниже

          if(date1.after(date2)){
                System.out.println("Date1 is after Date2");
            }
            // before() will return true if and only if date1 is before date2
            if(date1.before(date2)){
                System.out.println("Date1 is before Date2");
            }

            //equals() returns true if both the dates are equal
            if(date1.equals(date2)){
                System.out.println("Date1 is equal Date2");
            }

Где date2 - это, возможно, ваша текущая дата или любая дата, которую вы хотите указать.

Чтобы вернуть то, что вам нужно, сделайте это

ExamList exam = new ExamList();
SimpleDateFormat sd=new SimpleDateFormat("dd/MM/yyyy");  
int i = 0;
foreach(ExamList ex : examList){
  if(sd.parse(ex.getExDate()).after(date)){
    exam = ex;
    }
    i++;
}

Просто попробуйте.

Дайте мне знать, если понадобятся некоторые настройки, я могу подключиться к компьютеру вместо телефона.

Примечание. Возможно, вам потребуется добавить необходимые проверки на ноль.

...