java在数组中插入元素
我有一个实现接口的类,我想当我多次尝试将元素插入数组时,第一次插入都会被忘记。我真的搞不懂这个。这就是我所拥有的:
public void insertElementAt(int index, E el)
throws IllegalArgumentException {
Object temp[] = new Object[data.length + 1];
for (int i = 0; i < data.length; i++) {
if (i == index){
temp[index] = el;
temp[i + 1] = data[i];
i++;
}
temp[i] = data[i];
}
data = temp;
if (index > data.length || index < 0) {
throw new IllegalArgumentException();
}
}
然后,我的测试报告null
,而不是最后一个断言中的第一个
@Test
public void testInsertToLeft() {
PriorityList<String> list = new ArrayPriorityList<String>();
list.insertElementAt(0, "First");
// Must shift array elements in this case
list.insertElementAt(0, "New First");
assertEquals("New First", list.getElementAt(0));
assertEquals("First", list.getElementAt(1));
}
# 1 楼答案
我会这样做:
}
# 2 楼答案
你必须这样做:
要删除它:
# 3 楼答案
您应该首先对有效参数进行测试(“fail early”),您可以充分利用JDK的实用方法为您提升:
还要注意的是,您不需要声明
throws
,因为IllegalArgumentException
是一个未选中的异常,所以我删除了它。通常情况下,人们会遵循这种模式# 4 楼答案
什么是数据。列表为空时的长度?如果第一次插入时它为空,则不会输入for循环,而是复制temp数组,它将在下一次插入时进入循环,长度为1。将跳过第一次插入
# 5 楼答案
尝试将for循环更改为:
或者