java - 将元素插入数组

标签 java

我有一个实现接口(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/

相关文章:

java - kotlin 中的数据绑定(bind) TypeConverter 错误

java - 当脚本显示在 HTML 文本区域中时,是否可能发生 XSS 攻击?

java - 使用 ReplaceAll() 进行询问

java - 在Java中使用父类名存储时如何返回继承的对象

java - 在 Java DAO 上使用同步是否会导致问题?

java - 使用 Maven 创建 META-INF/services 文件

java - 在 Java 中读取 YAML 文件时堆栈溢出

java - 如何检查字符串中的每个奇数索引是否具有相同的字母?

onCreate 的 java.lang.NoSuchMethodException

java - 使用 hibernate 将三个表合并为一个表