1 |
|
/* |
2 |
< |
* %W% %E% |
2 |
> |
* Copyright 2003-2006 Sun Microsystems, Inc. All Rights Reserved. |
3 |
> |
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 |
|
* |
5 |
< |
* Copyright 2006 Sun Microsystems, Inc. All rights reserved. |
6 |
< |
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. |
5 |
> |
* This code is free software; you can redistribute it and/or modify it |
6 |
> |
* under the terms of the GNU General Public License version 2 only, as |
7 |
> |
* published by the Free Software Foundation. Sun designates this |
8 |
> |
* particular file as subject to the "Classpath" exception as provided |
9 |
> |
* by Sun in the LICENSE file that accompanied this code. |
10 |
> |
* |
11 |
> |
* This code is distributed in the hope that it will be useful, but WITHOUT |
12 |
> |
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
13 |
> |
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
14 |
> |
* version 2 for more details (a copy is included in the LICENSE file that |
15 |
> |
* accompanied this code). |
16 |
> |
* |
17 |
> |
* You should have received a copy of the GNU General Public License version |
18 |
> |
* 2 along with this work; if not, write to the Free Software Foundation, |
19 |
> |
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
20 |
> |
* |
21 |
> |
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, |
22 |
> |
* CA 95054 USA or visit www.sun.com if you need additional information or |
23 |
> |
* have any questions. |
24 |
|
*/ |
25 |
|
|
26 |
|
package java.util; |
70 |
|
* ({@code peek}, {@code element}, and {@code size}). |
71 |
|
* |
72 |
|
* <p>This class is a member of the |
73 |
< |
* <a href="{@docRoot}/../guide/collections/index.html"> |
73 |
> |
* <a href="{@docRoot}/../technotes/guides/collections/index.html"> |
74 |
|
* Java Collections Framework</a>. |
75 |
|
* |
76 |
|
* @since 1.5 |
244 |
|
private void grow(int minCapacity) { |
245 |
|
if (minCapacity < 0) // overflow |
246 |
|
throw new OutOfMemoryError(); |
247 |
< |
int oldCapacity = queue.length; |
247 |
> |
int oldCapacity = queue.length; |
248 |
|
// Double size if small; else grow by 50% |
249 |
|
int newCapacity = ((oldCapacity < 64)? |
250 |
|
((oldCapacity + 1) * 2): |
300 |
|
} |
301 |
|
|
302 |
|
private int indexOf(Object o) { |
303 |
< |
if (o != null) { |
303 |
> |
if (o != null) { |
304 |
|
for (int i = 0; i < size; i++) |
305 |
|
if (o.equals(queue[i])) |
306 |
|
return i; |
320 |
|
* @return {@code true} if this queue changed as a result of the call |
321 |
|
*/ |
322 |
|
public boolean remove(Object o) { |
323 |
< |
int i = indexOf(o); |
324 |
< |
if (i == -1) |
325 |
< |
return false; |
326 |
< |
else { |
327 |
< |
removeAt(i); |
328 |
< |
return true; |
329 |
< |
} |
323 |
> |
int i = indexOf(o); |
324 |
> |
if (i == -1) |
325 |
> |
return false; |
326 |
> |
else { |
327 |
> |
removeAt(i); |
328 |
> |
return true; |
329 |
> |
} |
330 |
|
} |
331 |
|
|
332 |
|
/** |
337 |
|
* @return {@code true} if removed |
338 |
|
*/ |
339 |
|
boolean removeEq(Object o) { |
340 |
< |
for (int i = 0; i < size; i++) { |
341 |
< |
if (o == queue[i]) { |
340 |
> |
for (int i = 0; i < size; i++) { |
341 |
> |
if (o == queue[i]) { |
342 |
|
removeAt(i); |
343 |
|
return true; |
344 |
|
} |
355 |
|
* @return {@code true} if this queue contains the specified element |
356 |
|
*/ |
357 |
|
public boolean contains(Object o) { |
358 |
< |
return indexOf(o) != -1; |
358 |
> |
return indexOf(o) != -1; |
359 |
|
} |
360 |
|
|
361 |
|
/** |
416 |
|
if (a.length < size) |
417 |
|
// Make a new array of a's runtime type, but my contents: |
418 |
|
return (T[]) Arrays.copyOf(queue, size, a.getClass()); |
419 |
< |
System.arraycopy(queue, 0, a, 0, size); |
419 |
> |
System.arraycopy(queue, 0, a, 0, size); |
420 |
|
if (a.length > size) |
421 |
|
a[size] = null; |
422 |
|
return a; |
509 |
|
lastRetElt = null; |
510 |
|
} else { |
511 |
|
throw new IllegalStateException(); |
512 |
< |
} |
512 |
> |
} |
513 |
|
expectedModCount = modCount; |
514 |
|
} |
515 |
|
} |
706 |
|
// Write out array length, for compatibility with 1.5 version |
707 |
|
s.writeInt(Math.max(2, size + 1)); |
708 |
|
|
709 |
< |
// Write out all elements in the proper order. |
709 |
> |
// Write out all elements in the "proper order". |
710 |
|
for (int i = 0; i < size; i++) |
711 |
|
s.writeObject(queue[i]); |
712 |
|
} |
725 |
|
// Read in (and discard) array length |
726 |
|
s.readInt(); |
727 |
|
|
728 |
< |
queue = new Object[size]; |
728 |
> |
queue = new Object[size]; |
729 |
|
|
730 |
< |
// Read in all elements in the proper order. |
730 |
> |
// Read in all elements. |
731 |
|
for (int i = 0; i < size; i++) |
732 |
|
queue[i] = s.readObject(); |
733 |
+ |
|
734 |
+ |
// Elements are guaranteed to be in "proper order", but the |
735 |
+ |
// spec has never explained what that might be. |
736 |
+ |
heapify(); |
737 |
|
} |
738 |
|
} |