У меня есть класс, который реализует интерфейс, и я думаю, когда я пытаюсь вставить элемент в массив более одного раза, первые вставки забываются. Я действительно не могу понять этого. Это то, что у меня есть:Вставка элементов в массив
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));
}
Похоже, вам нужны _two_ indexes - один для старого массива и один для нового массива. Как бы то ни было, когда вы пропускаете один элемент из-за вставки, вы пропускаете _both_ массивы. Постскриптум просто используйте «Список». –
Кажется, вам нужно 'continue' в конце блока' if'. – Admit
Что такое первый размер 'data'? –