簡體   English   中英

迭代列表中的值並獲取最舊、最新的日期

[英]Iterate the values from the List and get oldest, newest dates

我正在處理 spring 申請。 我有一個LinkedHashMap<Integer, List<MyDTO>> object,在 map 的值中(即List<MyDTO> )我有屬性myDate保存日期。 我想迭代LinkedHashMap<Integer, List<MyDTO>>並從List<MyDTO> myDate 屬性中獲取最早和最新的日期。

LinkedHashMap<Integer, List<MyDTO>> myResults =  myService.getResultData(myDTO);

 for (Map.Entry results : myResults.entrySet()) {
     List<MyDTO> myDTOList = (List<MyDTO>) results.getValue();

     //some business logic to process the list object, myDate property is in this myDTOList from which i need to get the oldest anad latest date.

}

以上是示例代碼,我嘗試迭代 Map(myResults) 並獲取 map object 的值,即List<MyDTO> 關於如何從列表對象(myDTOList)的 myDate 屬性中存儲的日期中獲取最舊和最新日期的任何建議? ,

直接遍歷List<MyDTO> ,用maxmin兩個變量分別記錄最新日期和最舊日期,這個很容易實現,所以我覺得你可以自己寫代碼。

希望我沒有誤解你的問題。

這是一個簡單的 java 代碼,用於獲取最早和最新的日期。 還有許多其他方法可以實現這一點。

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;

public class CompareDates {

    public static void main(String[] args){
        List<Date> dates = new ArrayList<Date>();
        Date date1 = new GregorianCalendar(2014, Calendar.FEBRUARY, 11).getTime();
        Date date2 = new GregorianCalendar(2015, Calendar.MARCH, 2).getTime();
        Date date3 = new GregorianCalendar(2016, Calendar.JANUARY, 4).getTime();
        Date date4 = new GregorianCalendar(2017, Calendar.MARCH, 17).getTime();
        Date date5 = new GregorianCalendar(2017, Calendar.FEBRUARY, 12).getTime();
        Date date6 = new GregorianCalendar(2017, Calendar.JULY, 14).getTime();

        dates.add(date1);
        dates.add(date2);
        dates.add(date3);
        dates.add(date4);
        dates.add(date5);
        dates.add(date6);

        Date minDate = dates.get(0);
        Date maxDate = dates.get(0);

        for(int i=1; i < dates.size(); i++){
            if(dates.get(i).before(minDate)){
                minDate = dates.get(i);
            }
            if(dates.get(i).after(maxDate)){
                maxDate = dates.get(i);
            }
        }

        System.out.println("Min date is ---"+minDate);
        System.out.println("Max date is ---"+maxDate);

    }
}

在您的代碼中,您可以使用日期 API 之前之后以類似方式執行比較。

LinkedHashMap<Integer, List<MyDTO>> myResults =  myService.getResultData(myDTO);

 for (Map.Entry results : myResults.entrySet()) {
     List<MyDTO> myDTOList = (List<MyDTO>) results.getValue();
        Date minDate, maxDate;
        for(int i=0; i < myDTOList.size(); i++){
            if(i == 0){
                 minDate = myDTOList.get(0).getMyDate();
                 maxDate = myDTOList.get(0).getMyDate();
            }
            if(myDTOList.get(i).before(minDate)){
                minDate = dates.get(i);
            }
            if(myDTOList.get(i).after(maxDate)){
                maxDate = dates.get(i);
            }
        }

        System.out.println("Min date is ---"+minDate);
        System.out.println("Max date is ---"+maxDate);

}

也許來晚了,但我使用了 stream():

public static Optional<Calendar> getLastMonth(@NonNull List<Calendar> monthList){
    return monthList.stream().max(Calendar::compareTo);
}

public static Optional<Calendar> getFirstMonth(@NonNull List<Calendar> monthList){
    return monthList.stream().min(Calendar::compareTo);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM