Имхо надо делать хотя бы 1 задачу - факультатив в конце курса на пройденный материал.
В которой используются Календарь, анонимные классы, компаратор, работа с файлами, ещё что-то пройденное, но чтобы ни начального кода, ни решения не было. Но могут быть тесты.
Это освежит знания в памяти и решение такой задачи должно запомниться сильнее.
кто может мне первую задачу обьяснить?
ведь тут постоянно в ретуне происходит рекурсия? обьясните плиз!
public Iterator getIterator(final String name) {
return new Iterator() {
{
countItems++;
System.out.println(name + " item " + countItems);
}
public Iterator next() {
return getIterator(name);
public Iterator getIterator(final String name) {
//тут ты создаёшь анонимный класс реализующий интерфейс Iterator и тут же возвращаешь его объект
return new Iterator() {
{
countItems++;
System.out.println(name + " item " + countItems);
}
// а этот метод будет иметь возвращенный объект, и его можно будет вызвать у этого объекта уже в другом месте программы (пример ниже).
public Iterator next() { //
return getIterator(name);
}
};
}
.....
//какой-то код
.....
Iterator iterator = solution.getIterator("iterator"); // создали объект анонимного класса реализующего интерфейс
for (int i = 1; i < 5; i++) {
iterators.add(iterator.next()); // а тут вызывая метод создаём ещё объекты)))
//можно было бы и так
iterators.add(solution.getIterator("iterator"));
}
благодаря последней задаче я вспомнил про компаратор и компарабле. Ну и закрепил лекции. Но конечно в последней задаче они условие как обычно слепили, в последнее время даже вникать в такую дичь не хочется, потому что понимаешь, что решить знаешь как, но пока ПОЙМЕШЬ все условия, и ПОНРАВИШЬСЯ валидатору, потратишь много времени.
В условиях хардовой задачи могли бы и написать, что прибыль сначала нужно брать из change, а если ее нет, то уж тогда высчитывать из last и open. Из кода это неочевидно, потому что change это сдача, а не прибыль.
Да, формулировка неочевидная. Скорей всего, подразумевались цены на акции.
open - цена открытия
last - последняя, т.е. текущая цена
change - изменение, т.е. разница между ними.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ