我想按顺序对这些时间进行排序:
4:05 AM
5:04 PM
6:04 AM
4:05 PM
5:04 AM
12:01 AM
12:01 PM
使用Time class with
public int compareTo(Time t)
方法
if(this.getMeridians() != t.getMeridians())
return this.getMeridians().compareTo(t.getMeridians());
对AM和PM进行排序,但我不知道如何对小时和分钟进行排序。 这是12小时制,所以12:01 AM应该是第一个在列表中。为了做到这一点,我应该如何填写compareTo(时间t)?
应该是这样的。
12:01 AM
4:05 AM
5:04 AM
6:04 AM
12:01 PM
4:05 PM
5:04 PM
答案 0 :(得分:2)
Date
个对象使用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 :(得分:1)
answer by Guy是正确的。
为了好玩,我使用Joda-Time 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中搜索在Joda-Time中使用格式化程序创建字符串的示例(“print”方法)。