如何从时间列表中获取最大时间?

时间:2018-09-25 18:24:01

标签: java android android-studio

我想从 Java

中的时间格式列表中找到最大时间

例如,它看起来像这样:

String times = "11:20, 12:20, 13:20, 14:20, 15:20"

如何从我的时间中获取最大时间(例如15:20)?

3 个答案:

答案 0 :(得分:0)

您可以执行以下代码;

String times = "11:20, 12:20, 13:20, 14:20, 15:20";
String[] allTimes = times.replaceAll(" ", "").split(",");
String maxTime = Stream.of(allTimes).max(String::compareTo).get();

现在您可以将maxTime转换为LocalTime或任何您想要的东西。

答案 1 :(得分:0)

有两种选择:

1)使用这些时间作为字符串进行操作:

String timesString = "11:20, 12:20, 13:20, 14:20, 15:20";
//split to array of ["11:20", "12:20", ..., "15:20"]
String[] timesStringArray = timesString.split(", ");
//find lexicographic maximum (in this case it will be equals to max time)
String maxDateString = Collections.max(Arrays.asList(timesStringArray));

2)使用这些时间作为日期进行操作:

String timesString = "11:20, 12:20, 13:20, 14:20, 15:20";
//split to array of ["11:20", "12:20", ..., "15:20"]
String[] timesStringArray = timesString.split(", ");
//create formatting string for our case to convert string to Date
SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm");
//create list of dates
List<Date> times = new ArrayList<>();
for (String time : timesStringArray) {
    try {
        times.add(dateFormat.parse(time));
    } catch (ParseException e) {
        e.printStackTrace();
    }
}
//find max time as Date
Date maxDate = Collections.max(times);
// convert back to String if needed
String maxDateString = dateFormat.format(maxDate);

答案 2 :(得分:0)

    String times = "11:20, 12:20, 13:20, 14:20, 15:20";
    String[] timeArray = times.split(", ");
    Optional<LocalTime> maxTime = Arrays.stream(timeArray)
            .map(LocalTime::parse)
            .max(Comparator.naturalOrder());
    maxTime.ifPresent(System.out::println);

此打印:

  

15:20

我更喜欢为值使用适当的类型,而不是将所有内容都放在字符串中。 LocalTime是一天中某个时间的正确类别(没有日期,没有时区或偏移量)。