2016-04-25 8 views
-3

私は日付のリストを配列リストにStringとして持っています。私はこのリストから最低の日付の値を取得し、次に "dd-MM-yy"形式の日付と比較する必要があります。どうやってやるの??ここで日付のリストをJavaのStringとして並べ替える

は私のコードです::

List<String> dateList = new ArrayList<String>(); 
for(DailyDataReading ddr: finalResult){ 
    dateList.add(sdf.format(ddr.getDailyReadingDate())); 
} 

Collections.sort(dateList); 

if((sdf.format("date which is to be compared")).compareTo(dateList.get(dateList.size()-1))<=0) 
{...} 
+3

あなたのコードを追加しました。それは素晴らしいスタートです。ここで、このコードが何をすべきか、どのように表現するべきか、それがあなたが期待したものとどのように違うのかを説明しようとします。 – Pshemo

+0

実際には、降順で日付が必要です。このcollections.sort()は、日付が文字列形式であるため、降順または任意の順序で日付を返しますか? – prem

+0

'Comparator'引数なしで' Collection.sort'は* natural * order(すべての要素が 'Comparable'を実装し、' compareTo(other) 'メソッドが提供する順序を使用すると仮定します)を使用しようとします。とにかくmin/maxを探しているなら、すべての要素をソートする必要はありません。通常、すべての要素に対して1回の反復で最小/最大を選ぶのに十分なはずです。 – Pshemo

答えて

0

あなたの文字列は、フォームdd-MM-yy内のすべての日付値であり、あなたが年代順に、これらの日付文字列をソートしたい場合は、すべての年は、この世紀からあると仮定して(つまり、2000年から2099年まで)、これがあなたのやり方です。

Collections.sort(dateList, (d1,d2) -> { 
    int cmp = d1.substring(6, 8).compareTo(d2.substring(6, 8)); 
    if (cmp == 0) 
     cmp = d1.substring(3, 5).compareTo(d2.substring(3, 5)); 
    if (cmp == 0) 
     cmp = d1.substring(0, 2).compareTo(d2.substring(0, 2)); 
    return cmp; 
}); 

「このリストから最小日付の値が」最初の値、すなわちdateList.get(0)あります。

1
List<String> dateList;// This is your list of dates in string format 
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("dd-MM-yy");// This is a formatter to convert from your pattern to a LocalDate 
List<LocalDate> dates = dateList.stream().map(dateString -> LocalDate.parse(dateString, dateTimeFormatter)).collect(Collectors.toList());// Use Java 8 streams to map the dates strings to LocalDate objects 
Collections.sort(dates);// Sort the list 
LocalDate earliestDate = dates.get(0);// Take the lowest date value from the list 
LocalDate specialDate = LocalDate.parse("some date", dateTimeFormatter);// create a date object for the date that you want to compare it to 
earliestDate.compareTo(specialDate);// compare them 
0

Collections.sort(list_of_dates、新しいCustomComparator())。

public class CustomComparator implements Comparator<MyObject> {// MyObject would be Model class 
    Date date1,date2; 
    @Override 
    public int compare(MyObject obj1, MyObject obj2) { 
     DateFormat df1 = new SimpleDateFormat("dd, MMM yyyy"); 
     try { 
      date1 = df1.parse(obj1.getDate()); 
      date2 = df1.parse(obj2.getDate()); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 
     return date1.compareTo(date2); 
    } 
} 

Collections.reverse(list_of_dates)。

これは最新のものからあなたのリストをソートします..

関連する問題