Не могу переопределить методы add. Вернее могу, но они не работают так, как нужно. Суть задачи: У на есть фигуры (типа Figure) и коробка (ArrayList<>()). Фигуры мы добавляем в коробку. Нельзя добавить одну и ту же фигуру в коробку. Пытаюсь переопределить это в классе с моей коробкой - не получается.
Класс коробка:
import java.util.ArrayList;
import java.util.List;
public class Box extends ArrayList {
private List<Figure> box;
public Box() {
box = new ArrayList<>();
}
@Override
public boolean add(Object o) {
if (box.contains(o)){
return false;
}
return super.add(o);
}
@Override
public void add(int index, Object element) {
if (box.contains(element)){
return;
}
super.add(index, element);
}
}
В итоге из класса Main всё равно можно спокойно добавить 2 одинаковые фигуры в коробку. Что не так с моей коробкой?)
Вот класс Main:
public class Main {
public static void main(String[] args) {
Box box = new Box();
PaperCircle paperCircle = new PaperCircle(5);
System.out.println(box.add(paperCircle));
System.out.println(box.add(paperCircle));
System.out.println(box.size());
}
}
При выполнении видим: true true 2
А должно быть: true false 1
Во-первых
public class Box extends ArrayList<Figure> {
@Override
public boolean add(Figure figure) {
if (this.contains(figure)){
return false;
}
return super.add(figure);
}
}
Во-вторых, лучше подойдёт не ArrayList
, а HashSet.
Во-третьих, стоит реализовать в классе Figure
методы hash и equals.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Проблема в том, что я получаю 500 ошибкуА если я делаю тоже самое, но id передаю через куки, то всё нормально
Всегда думал что volatile переменные в Java хранятся в MetaSpace, недавно на собеседовании мне сказали что это неверноТак вот вопрос: где они хранятся?
Добрый день интересует такой вопрос, как сделать несколько установок по времени с помощью AlarmManagerДопустим мне нужно 2 сигнала в 11 и 12 часов