gpt4 book ai didi

java - 尝试从自定义通用数组中删除元素时出现类型不兼容的问题

转载 作者:行者123 更新时间:2023-12-01 18:04:59 25 4
gpt4 key购买 nike

我想制作我自己的 ArrayList 表示。

在我的类(class)内MyList<T>我正在创建 T[] array= (T[]) new Object[size];

在尝试删除元素时,我必须创建另一个数组来比较元素,

所以我做了T[] tmpArr=(T[])array;

我想重写除一个元素之外的所有元素,我想删除它并且有错误

当我尝试时array[i]=tmpArr[i+1] ,或array= tmpArray任何类型转换都不起作用,我该怎么办?错误在 else if 和 else 内部

public void remove() {
T[] tmpArray= (T[]) new Object[realSize];
for(int i=0;i<size;++i){
tmpArray[i]=(T)array[i];
}
for(int i=0;i<size;++i) {
if (i == current - 1) {

} else if (i > current - 1) {
array[i] =tmpArray[i + 1];
} else {
array[i] = (T) tmpArray[i];
}
}

}

最佳答案

这不起作用,因为 new Object[int] 不会创建 T[],因此无法将其转换为一个。那么你能做什么呢?只需使用 Object[] 而不是 T[]

public class ArrayList<T>
private Object[] array = new Object[0];

public void remove() {
array = Arrays.copyOf(array, array.length - 1);
}

// Ensures only T objects are place inside Object[] array.
public void add(T object) {
array = Arrays.copyOf(array, array.length + 1);
array[array.length - 1] = object;
}

// Actually save, because only T objects can be place inside Object[] array
public T get(int index) {
@SuppressWarnings("unchecked")
T obj = (T) array[index];
return obj;
}
}

不要只是复制这个。这只是一个示例,每次大小更改(通过添加或删除)时都会创建一个新数组,效率非常低。

关于java - 尝试从自定义通用数组中删除元素时出现类型不兼容的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60572405/

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