Java 队列调整方法

Java 队列调整方法,java,Java,我正在使用数组编写优先级队列代码。我想创建一个方法,当队列的填充率超过75%时,可以更改队列的大小并扩展队列的大小。有人能帮忙吗 以下是我的方法: public void insert(T object) { if (object == null) throw new IllegalArgumentException(); if (size == heap.length - 1) throw new IllegalStateException(); heap[++si

我正在使用数组编写优先级队列代码。我想创建一个方法,当队列的填充率超过75%时,可以更改队列的大小并扩展队列的大小。有人能帮忙吗

以下是我的方法:

public void insert(T object) {
    if (object == null) throw new IllegalArgumentException();

    if (size == heap.length - 1) throw new IllegalStateException();

    heap[++size] = object;

    swim(size);
}
那么:

public void insert(T object) {
    if (object == null) throw new IllegalArgumentException();

    if (size >= 0.75*heap.length) {
        resize(2*heap.length);
    }

    heap[++size] = object;
}

private void resize(int newSize) {
    T[] newHeap = (T[])new Object[newSize];
    System.arraycopy(heap, 0, newHeap, 0, size);
    heap = newHeap;
}

它不应该是t[]newHeap=newt[newSize]?newHeap数组的类型应为T。它应为T[]newHeap=T[]新对象[newSize];编译器将抱怨存在未经检查的强制转换。你可以告诉它停止用@suppressWarningUnchecked抱怨。这是合理的,因为您知道它将保存T类型的元素。我假设T是泛型类型,在这种情况下,无法创建T数组。我还假设T是泛型的。如果备份数组的类型为Object,则客户端代码需要执行强制转换。只需在API代码中进行转换,并告诉编译器它是正确的。这简化了客户端代码。我不同意:如果heap的类型为T[],则不能为其分配对象[]。