gpt4 book ai didi

java - 将元素插入数组

转载 作者:行者123 更新时间:2023-12-01 14:02:23 26 4
gpt4 key购买 nike

我有一个实现接口(interface)的类,我认为当我多次尝试将元素插入数组时,第一次插入会被忘记。这个我实在是想不通。这就是我所拥有的:

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));
}

最佳答案

你必须这样做:

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[i + 1] = data[i];
} else {
temp[i] = data[i];
}
}
temp[index] = el;
data = temp;

if (index > data.length || index < 0) {
throw new IllegalArgumentException();
}
}

删除它:

public void removeElementAt(int index) throws IllegalArgumentException {

Object temp[] = new Object[data.length - 1];
for (int i = 0; i < temp.length; i++) {
if (i > index){
temp[i - 1] = data[i];
} else {
temp[i] = data[i];
}
}
data = temp;

if (index > data.length || index < 0) {
throw new IllegalArgumentException();
}
}

关于java - 将元素插入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19257704/

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