Работаю с Date.
Есть определенный List data.
В нем хранятся день рождения людей. Проблема в том, что есть дата полная (Например, "19.02.1996"), а есть без года ("25.03"), а есть вообще без возраста(null).
Я делаю метод чтобы высчитать возраст этих людей, но не могу придумать как откинуть тех людей, у которых не указан возраст.
Вот кусок кода, который сейчас у меня имеется:
for (int i = 0; i < data.size(); i++) {
String num = data.get(i).getBdate();
if (num != null) {
System.out.println(num);
String dataFormat = "dd.MM.yyyy";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dataFormat);
...
}
Хочу сделать такое условие if(num соответствует dataFormat){ //Считать возраст}
Можно воспользоваться методом isValidFormat из этого ответа, добавив в него обработку случая, когда вместо даты null.
Вот пример:
public static void main(String[] args) {
String dateFormat = "dd.MM.yyyy";
String[] arr = {
"19.02.1996",
"25.03",
null
};
for (String date: arr) {
if (isValidFormat(dateFormat, date)) { // Проверка даты на валидность
System.out.println(date);
// Делаем, что надо
}
}
}
public static boolean isValidFormat(String format, String value) {
if (value == null)
return false;
Date date = null;
try {
SimpleDateFormat sdf = new SimpleDateFormat(format);
date = sdf.parse(value);
if (!value.equals(sdf.format(date))) {
date = null;
}
} catch (ParseException ex) {}
return date != null;
}
Такой способ позволит вам легко изменять формат даты, на соответствие которому нужно её проверять.
list.stream()
.filter(data->!data.getBDay().isEmpty())
.filter(data->data.getBDay().length > 5)
.forEach(data->{
//Ваш код
});
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости