--- jsr166/src/main/java/util/PriorityQueue.java 2003/08/25 18:33:03 1.30
+++ jsr166/src/main/java/util/PriorityQueue.java 2003/08/27 01:33:50 1.34
@@ -37,7 +37,7 @@
* Multiple threads should not access a PriorityQueue
* instance concurrently if any of the threads modifies the list
* structurally. Instead, use the thread-safe {@link
- * java.util.concurrent.BlockingPriorityQueue} class.
+ * java.util.concurrent.PriorityBlockingQueue} class.
*
*
*
Implementation note: this implementation provides O(log(n)) time
@@ -56,7 +56,7 @@
public class PriorityQueue extends AbstractQueue
implements Queue, java.io.Serializable {
- static final long serialVersionUID = -7720805057305804111L;
+ private static final long serialVersionUID = -7720805057305804111L;
private static final int DEFAULT_INITIAL_CAPACITY = 11;
@@ -431,8 +431,7 @@ public class PriorityQueue extends Ab
checkForComodification();
PriorityQueue.this.remove(lastRet);
- if (lastRet < cursor)
- cursor--;
+ cursor--;
lastRet = 0;
expectedModCount = modCount;
}
@@ -464,8 +463,6 @@ public class PriorityQueue extends Ab
* Removes and returns the ith element from queue. Recall
* that queue is one-based, so 1 <= i <= size.
*
- * XXX: Could further special-case i==size, but is it worth it?
- * XXX: Could special-case i==0, but is it worth it?
*/
private E remove(int i) {
assert i <= size;
@@ -520,7 +517,7 @@ public class PriorityQueue extends Ab
private void fixDown(int k) {
int j;
if (comparator == null) {
- while ((j = k << 1) <= size) {
+ while ((j = k << 1) <= size && (j > 0)) {
if (j)queue[j]).compareTo((E)queue[j+1]) > 0)
j++; // j indexes smallest kid
if (((Comparable)queue[k]).compareTo((E)queue[j]) <= 0)
@@ -529,7 +526,7 @@ public class PriorityQueue extends Ab
k = j;
}
} else {
- while ((j = k << 1) <= size) {
+ while ((j = k << 1) <= size && (j > 0)) {
if (j < size && comparator.compare((E)queue[j], (E)queue[j+1]) > 0)
j++; // j indexes smallest kid
if (comparator.compare((E)queue[k], (E)queue[j]) <= 0)