AbstractCollection.java (addAll): Use size() instead of hasNext() in iterator loop.
2000-10-29 Bryce McKinlay <bryce@albatross.co.nz> * java/util/AbstractCollection.java (addAll): Use size() instead of hasNext() in iterator loop. (clear): Ditto. (contains): Ditto. Simplify loop. (containsAll): Ditto. (remove): Ditto. (removeAll): Ditto. (retainAll): Ditto. (toArray): Ditto. (toString): Ditto. Use string concatenation operators, not StringBuffer. * java/util/AbstractList.java (addAll): Use size() instead of hasNext() in iterator loop. (equals): Ditto. (hashCode): Ditto. (indexOf): Ditto. Don't take null check outside of the loop. (iterator): Return an AbstractListItr instead of anonymous class. (lastIndexOf): Use a for loop bounded by size() instead of hasPrevious() in iterator loop. (listIterator): Return an AbstractListItr. (removeRange): Remove bounds checking code and docs. (AbstractListItr): New inner class. Code moved here from listIterator(). (SubList.iterator): Removed. Use default implementation from AbstractList instead. (SubList.listIterator): As above. * java/util/AbstractMap.java (clear): Use a for loop bounded by size() instead of hasNext() in iterator loop. (containsValue): Ditto. (equals): Ditto. (get): Ditto. (put): Ditto. (putAll): Ditto. (remove): Ditto. (toString): Ditto. Use string concatenation operators, not StringBuffer. * java/util/AbstractSequentialList.java (addAll): Use a for loop bounded by size() instead of hasNext() in iterator loop. * java/util/AbstractSet.java (hashCode): Don't catch exception as part of normal execution flow. Do an explicit null check instead. * java/util/ArrayList.java (_iSize): Rename to `size'. (_arData): Rename to `data'. (get): Check lower bounds also. Simplify IndexOutOfBoundsException message. (remove): Ditto. (removeRange): Make protected. Don't check bounds. (add): Check lower bounds also. Simplify IndexOutOfBoundsException message. (addAll (Collection)): Use a size-bounded for loop instead of hasNext() check. (addAll (int, Collection)): Check lower bounds. Simplify exception string. (clone): Clone the data array too. (indexOf): Inline doesEqual(). (lastIndexOf): Ditto. (clear): Don't set array data to null. (set): Check lower bounds. Simplify exception string. (toArray): Correct comment. (trimToSize): Don't update modCount, this is not a structural change. Add comment. * java/util/BitSet.java: Merged with classpath, new JDK 1.2 methods implemented. (toString): Declare `bit' as long, not int. (data): Made package-private, not private. From-SVN: r37116
This commit is contained in:
parent
e2d7960734
commit
3a73757880
8 changed files with 980 additions and 892 deletions
|
@ -1,5 +1,5 @@
|
|||
/* AbstractSet.java -- Abstract implementation of most of Set
|
||||
Copyright (C) 1998 Free Software Foundation, Inc.
|
||||
Copyright (C) 1998, 2000 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
|
@ -7,7 +7,7 @@ GNU Classpath is free software; you can redistribute it and/or modify
|
|||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
|
||||
GNU Classpath is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
|
@ -36,7 +36,8 @@ package java.util;
|
|||
* class simply provides implementations of equals() and hashCode() to fulfil
|
||||
* the requirements placed on them by the Set interface.
|
||||
*/
|
||||
public abstract class AbstractSet extends AbstractCollection implements Set {
|
||||
public abstract class AbstractSet extends AbstractCollection implements Set
|
||||
{
|
||||
|
||||
/**
|
||||
* Tests whether the given object is equal to this Set. This implementation
|
||||
|
@ -48,14 +49,14 @@ public abstract class AbstractSet extends AbstractCollection implements Set {
|
|||
* @param o the Object to be tested for equality with this Set
|
||||
* @return true if the given object is equal to this Set
|
||||
*/
|
||||
public boolean equals(Object o) {
|
||||
if (o == this) {
|
||||
public boolean equals(Object o)
|
||||
{
|
||||
if (o == this)
|
||||
return true;
|
||||
} else if (o instanceof Set && ((Set)o).size() == size()) {
|
||||
return containsAll((Collection)o);
|
||||
} else {
|
||||
else if (o instanceof Set && ((Set) o).size() == size())
|
||||
return containsAll((Collection) o);
|
||||
else
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -66,15 +67,17 @@ public abstract class AbstractSet extends AbstractCollection implements Set {
|
|||
*
|
||||
* @return a hash code for this Set
|
||||
*/
|
||||
public int hashCode() {
|
||||
public int hashCode()
|
||||
{
|
||||
Iterator itr = iterator();
|
||||
int size = size();
|
||||
int hash = 0;
|
||||
Iterator i = iterator();
|
||||
while (i.hasNext()) {
|
||||
try {
|
||||
hash += i.next().hashCode();
|
||||
} catch (NullPointerException e) {
|
||||
for (int pos = 0; pos < size; pos++)
|
||||
{
|
||||
Object obj = itr.next();
|
||||
if (obj != null)
|
||||
hash += obj.hashCode();
|
||||
}
|
||||
}
|
||||
return hash;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue