Здесь Java-8 вам не сильно поможет.Номер даты легко узнаваем с помощью Regex :
\w+_\w+_(\d+)\.\w{2,4}
Просто примечание, которое, я полагаю, на xxxx
и lastbird
всегда равно 1..n буквам, разделенным на _
разделитель и затем с другим.Затем приходит числовая часть, представляющая дату.Наконец, расширение файла, включающее 2-4 буквы.
Используйте это преимущество, чтобы получить дату (например, 20170609
).Они могут быть проанализированы на целые числа, и поскольку этот формат позволяет прямое сравнение целых чисел, получите наибольшее число.
Pattern pattern = Pattern.compile("\\w+_\\w+_(\\d+)\\.\\w{2,4}");
Matcher matcher;
int maxIndex = 0;
int maxDate = 0;
for (int i=0; i<ls.size(); i++) {
String filename = ((ChannelSftp.LsEntry) entry).getFilename();
matcher = pattern.matcher(filename);
if (matcher.find(1)) {
int date = Integer.parseInt(matcher.group(1));
if (date >= maxDate) {
date = maxDate;
maxIndex = i;
}
}
}
System.out.println("Last modified file is found on index: " + maxIndex);
ChannelSftp.LsEntry = (ChannelSftp.LsEntry) vector.get(maxIndex);