Вставить удаленный элемент в список generi c - PullRequest
0 голосов
/ 17 февраля 2020

Я хочу удалить элемент удаления с конца 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. Но нельзя ли разрешить вставлять обратно элемент, полученный из того же списка?

1 Ответ

2 голосов
/ 17 февраля 2020

избавиться от подстановочного знака; и я даже не думаю, что вам нужен предел:

private void <T> removeElement(int i, List<T> objects) {
...