2013-12-07 167 views
1

我想這些時間,以便進行排序:TimeSorter:12小時時鐘

4:05 AM 
5:04 PM 
6:04 AM 
4:05 PM 
5:04 AM 
12:01 AM 
12:01 PM 

使用Time類

public int compareTo(Time t) 

方法。

if(this.getMeridians() != t.getMeridians()) 
    return this.getMeridians().compareTo(t.getMeridians()); 

來排序的上午和下午,但我不知道該怎麼小時和分鐘排序。 它採用12小時制形式,因此上午12:01應該是名單上第一位。爲了做到這一點,我應該如何填寫compareTo(Time t)?

它應該是這樣的。

12:01 AM 
4:05 AM 
5:04 AM 
6:04 AM 
12:01 PM  
4:05 PM 
5:04 PM 
+3

您發佈了一個小時或2個以前的完全相同的問題。我告訴過你用相關語言標記它,但看起來你已經刪除了它並轉發了它。請標記你的問題! –

+0

這不是一種語言 - 總是用一種語言來標記你的問題,例如, C,C++,C#,VB,JS,Java,PHP等 –

+1

幹得好。你的問題現在會得到更多的曝光。 –

回答

2
  1. 解析那些字符串Date對象
  2. 把他們集合
  3. 使用collection.sort()在整理收集

    import java.text.DateFormat; 
    import java.text.ParseException; 
    import java.text.SimpleDateFormat; 
    import java.util.ArrayList; 
    import java.util.Collections; 
    import java.util.Date; 
    import java.util.List; 
    import java.util.Locale; 
    
    String[] sArr = new String[] { "4:05 AM", "5:04 PM", "6:04 AM", 
         "4:05 PM", "5:04 AM", "12:01 AM", "12:01 PM"}; 
    
    DateFormat dateFormat = new SimpleDateFormat("hh:mm a", Locale.US); 
    List<Date> dates = new ArrayList<Date>(); 
    try { 
        for (String s : sArr) { 
         Date date = dateFormat.parse(s); 
         dates.add(date); 
        } 
    } catch (ParseException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
    } 
    
    Collections.sort(dates); 
    
    for (Date date : dates) { 
        System.out.println(dateFormat.format(date)); 
    } 
    
1

answer by Guy是正確的。

爲了好玩,我做了相同類型的代碼,但使用了2.3庫。

我的代碼假設你真的只需要時間,沒有日期。因此,您將無法處理夏令時或其他問題。

// © 2013 Basil Bourque. This source code may be used freely forever by anyone taking full responsibility for doing so. 
// import org.joda.time.*; 
// import org.joda.time.format.*; 

DateTimeFormatter formatter = DateTimeFormat.forPattern("hh:mm a"); 
// LocalTime time = formatter.parseLocalTime("4:05 PM"); 

// Create a list of org.joda.time.LocalTime instances, created by parsing strings. 
List list = new ArrayList(7); 
list.add(formatter.parseLocalTime("4:05 AM")); 
list.add(formatter.parseLocalTime("5:04 PM")); 
list.add(formatter.parseLocalTime("6:04 AM")); 
list.add(formatter.parseLocalTime("4:05 PM")); 
list.add(formatter.parseLocalTime("5:04 AM")); 
list.add(formatter.parseLocalTime("12:01 AM")); 
list.add(formatter.parseLocalTime("12:01 PM")); 
System.out.println("Unsorted: " + Arrays.toString(list.toArray())); 

// Sort that list. 
Collections.sort(list); 
System.out.println("Sorted: " + Arrays.toString(list.toArray())); 

當運行...

Unsorted: [04:05:00.000, 17:04:00.000, 06:04:00.000, 16:05:00.000, 05:04:00.000, 00:01:00.000, 12:01:00.000] 
Sorted: [00:01:00.000, 04:05:00.000, 05:04:00.000, 06:04:00.000, 12:01:00.000, 16:05:00.000, 17:04:00.000] 

如果您需要的輸出值再次爲AM/PM格式,搜索StackOverflow.com使用格式化的喬達時間創建的字符串的例子(」打印「方法)。