我编写了这些方法来将元素插入到ArrayList中:
public void insert(E element) {
queue.add(size(), element);
siftUp(size() - 1);
}
public void siftUp(int size) {
E elem = queue.get(size);
for (; size > 0 && (elem.compareTo(queue.get(size / 2)) == 1); size /= 2) {
queue.add(size, queue.get(size/2));
}
queue.add(size, elem);
}
但是我用测试执行它们,它会插入多个项目而我不知道原因:
@Test
public void testInsert_OneEl() {
PriorityQueue queue = new PriorityQueue();
Integer[] arrayExp = {5};
queue.insert(5);
assertArrayEquals(arrayExp, queue.getQueue().toArray());
}
错误是:
testInsert_OneEl(priorityqueue.QueueTests): array lengths differed, expected.length=1 actual.length=2".
答案 0 :(得分:0)
来自@Turing85 我的数组增加+1,因为我将方法称为“添加”两次。