Как получить максимальное время из списка раз? - PullRequest
0 голосов
/ 25 сентября 2018

Я хочу найти максимальное время из списка форматов времени в Java

Например, это выглядит так:

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

Как я могу получить максимальное время (для этого примера 15:20) из моего времени?

Ответы [ 3 ]

0 голосов
/ 25 сентября 2018

Существует два варианта:

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);
0 голосов
/ 25 сентября 2018
    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 - правильный класс для времени суток (без даты и без часового пояса или смещения).

0 голосов
/ 25 сентября 2018

Вы можете сделать как ниже код;

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 или что угодно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...