使用ArrayList在Priority Queue中插入方法

时间:2018-04-23 16:01:08

标签: java methods queue

我编写了这些方法来将元素插入到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".

1 个答案:

答案 0 :(得分:0)

来自@Turing85 我的数组增加+1,因为我将方法称为“添加”两次。