Я хочу удалить элемент удаления с конца ArrayList
и установить его в положение i
. Меня не волнует порядок элементов, но я хочу, чтобы эта операция была O (1).
Мой код:
private void removeElement(int i, List<? extends MyClass> objects) {
if (i >= objects.size() - 1) {
objects.remove(objects.size() - 1);
} else {
objects.set(i, objects.remove(objects.size() - 1));
}
}
Делая это, я удаляю объект в i
Индекс моей сложности ArrayList
за O (1).
Моя проблема в том, что Java не позволит мне установить удаленный элемент в положение i
. Я получаю:
Неверный тип 2-го аргумента. Нашел '? расширяет MyClass ', требуется'? extends MyClass '.
Я знаю о правиле "производитель расширяет потребительский супер". Я понимаю, что ? extends MyClass
объект может отличаться от точного ? extends MyClass
List generi c type. Но нельзя ли разрешить вставлять обратно элемент, полученный из того же списка?