Java 队列调整方法
我正在使用数组编写优先级队列代码。我想创建一个方法,当队列的填充率超过75%时,可以更改队列的大小并扩展队列的大小。有人能帮忙吗 以下是我的方法: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
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[],则不能为其分配对象[]。