2017-08-30 17 views
-2

私は春のアプリケーションに取り組んでいます。私はLinkedHashMap<Integer, List<MyDTO>>オブジェクトを持っています。マップの値(すなわち、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. 

} 

は、上記iがマップ(myResults)を反復することを試みたとList<MyDTO>ある地図オブジェクトの値を取り、サンプルコードです。 リストオブジェクト(myDTOList)のmyDateプロパティに格納されている日付から最も古い日付と最新の日付を取得する方法 ?? 、

+0

どのような問題がありますか?あなたはリストを反復する方法を知らないのですか?日付を比較するには? – shmosel

+0

あなたのMyDTOオブジェクトモデルは何ですか?今までの最後の日付と最初の日付を取得するために何を試しましたか? – nullpointer

+0

@ user7833845、日付ライブラリの前後で比較を行うことができますので、下記のサンプルコードを確認してください。 –

答えて

0

ここでは、最も古い日付と最新の日付を取得するための単純な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のbeforeafterを使用することができます。

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); 

} 
0

minの2つの変数を使用して、最新の日付と最も古い日付を記録してください。これは簡単なコードなので、自分でコードを書くことができると思います。

私はあなたが誤解していないことを願っています。

関連する問題