gpt4 book ai didi

java - 在通用列表中插入删除的元素

转载 作者:行者123 更新时间:2023-12-02 01:04:09 24 4
gpt4 key购买 nike

我想从ArrayList末尾删除remove元素并将其设置在位置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));
}
}

通过这样做,我可以以 O(1) 的时间复杂度从 ArrayList 中删除 i 索引处的对象。

我的问题是 Java 不允许我在 i 位置设置已删除的元素。我得到:

Wrong 2nd argument type. Found '? extends MyClass', required '? extends MyClass'.

我知道“生产者扩展消费者 super ”规则。我明白吗? extends MyClass 对象可能与确切的 不同? extends MyClass 列出泛型类型。但不应该允许插入从同一列表检索到的元素吗?

最佳答案

去掉通配符;我什至认为你不需要界限:

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

关于java - 在通用列表中插入删除的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60266452/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com