"Нельзя менять коллекцию при обходе итератором" - так было написано в лекции, когда мы проходили коллекции.
Но можно использовать цикл со счетчиком.
Окей, я использую цикл со счетчиком - не принимает, есть какая-то ошибка.
Не могу найти, помогите, пожалуйста.
Ну а в правильном решении что?
Используется итератор и меняется коллекция )))))
package com.javarush.task.pro.task16.task1602;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/*
Подчищаем хвосты
*/
public class Solution {
public static void main(String[] args) {
List<Date> dateList = new ArrayList<>();
dateList.add(new Date(2015, 12, 25, 20, 40));
dateList.add(new Date("July 20, 1969"));
dateList.add(new Date(1989, 11, 9));
dateList.add(new Date("January 1, 2000"));
System.out.println("before fixes:");
dateList.forEach(System.out::println);
fixDate(dateList);
System.out.println("after fixes:");
dateList.forEach(System.out::println);
}
static void fixDate(List<Date> brokenDates) {
Date current = new Date();
for (int i = 0; i < brokenDates.size(); i++) {
Date check = brokenDates.get(i);
if(check.after(current)){
check.setYear(check.getYear()-1900);
check.setMonth(check.getMonth()-1);
brokenDates.set(i, check);
}
}//напишите тут ваш код
}
}
Date checkссылку, потом меняешь обьект по ссылке. Он никуда из листа не девается и все изменения доходят. Работать и так и так будет, но вопрос в том, что проверка кривая и что ей надо, выяснить сложно. можно только код чище делать. Мой вариант решения: