首页javasortJava Data Structure - 如何排序时间字符串列表

Java Data Structure - 如何排序时间字符串列表

我们想知道如何排序时间字符串列表。
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;

public class Main {
  public static void main(String[] args) {
    List<String> times = Arrays.asList(new String[] { "03:00 AM", "12:30 PM",
        "16:15" });
    Collections.sort(times, new TimeStringComparator());
    System.out.println(times);
  }
}

class TimeStringComparator implements Comparator<String> {
  private DateFormat primaryFormat = new SimpleDateFormat("h:mm a");
  private DateFormat secondaryFormat = new SimpleDateFormat("H:mm");

  @Override
  public int compare(String time1, String time2) {
    return timeInMillis(time1) - timeInMillis(time2);
  }

  public int timeInMillis(String time) {
    return timeInMillis(time, primaryFormat);
  }

  private int timeInMillis(String time, DateFormat format) {
    try {
      Date date = format.parse(time);
      return (int) date.getTime();
    } catch (ParseException e) {
      if (format != secondaryFormat) {
        return timeInMillis(time, secondaryFormat);
      } else {
         System.out.println(e);
         return -1;
      }
    }
  }

}