我有一项任务,我对列表和泛型的概念感到很困惑。我不明白为什么我们的编码分配模板包括似乎是一系列泛型"私人物品[]项目;"如果泛型不适合数组。我需要在列表接口上定义的所有这些方法来处理ArrList。
public class ArrList<T> implements ListInterface<T>{
private int maxSize=10;
private myObj<T>[] objects;
private int count;
ArrList(){
objects = new myObj<T>[maxSize];//I did this
count = 0;
}
我遇到困难的方法是将元素插入到具有少于maxSize非空元素的数组中并移动这些元素。喜欢: 1 2 3 4 5 _ _ _ _ _在位置2处插入8将产生: 1 2 8 3 4 5 _ _ _ _我知道如果我允许在原始对象数组的位置之前创建具有相同元素的项目数组,但是使用不同移位的数组和然后复制到objects数组,(必须是void方法)。但是我不知道如何改变原始阵列。提前谢谢。
答案 0 :(得分:0)
基本的for循环可以解决这个问题:
for (int i = count; i > insert; i--)
objects[i] = objects[i - 1];
objects[insert] = newValue;
这从数组的末尾开始,一次一个地向右拉项目,直到它到达你想要插入的索引。执行此操作后,您可以将值写入数组,而不会丢失任何其他条目。
关于泛型 - 您无法在Java中创建泛型类型数组,它只是无法解决。另一种方法是将所有内容存储在Object[]
类型的数组中,并将返回值转换为适当的类型。