summaryrefslogtreecommitdiff
path: root/java/util/AbstractCollection.java
diff options
context:
space:
mode:
authorMark Wielaard <mark@klomp.org>2006-02-02 13:29:00 +0000
committerMark Wielaard <mark@klomp.org>2006-02-02 13:29:00 +0000
commit0d16146e4605a1c72d5e692d1ebd0e7719d47d17 (patch)
treefc2cfb506d7be7f505eafe2f9c52d22c44e9db1a /java/util/AbstractCollection.java
parentcab80cc0c72efbfb27c3a52674d181be2538964f (diff)
downloadclasspath-0d16146e4605a1c72d5e692d1ebd0e7719d47d17.tar.gz
Fixes bug #25769 reported by Artemus Harper <subanark@gmail.com>
* java/util/AbstractCollection.java (toString): Only use Iterator, check whether collection contains itself.
Diffstat (limited to 'java/util/AbstractCollection.java')
-rw-r--r--java/util/AbstractCollection.java16
1 files changed, 12 insertions, 4 deletions
diff --git a/java/util/AbstractCollection.java b/java/util/AbstractCollection.java
index 00ee23ebd..3ae98e073 100644
--- a/java/util/AbstractCollection.java
+++ b/java/util/AbstractCollection.java
@@ -423,7 +423,9 @@ public abstract class AbstractCollection implements Collection
* of the form "[a, b, ...]" where a and b etc are the results of calling
* toString on the elements of the collection. This implementation obtains an
* Iterator over the Collection and adds each element to a StringBuffer as it
- * is returned by the iterator.
+ * is returned by the iterator. "<this>" is inserted when the collection
+ * contains itself (only works for direct containment, not for collections
+ * inside collections).
*
* @return a String representation of the Collection
*/
@@ -431,10 +433,16 @@ public abstract class AbstractCollection implements Collection
{
Iterator itr = iterator();
StringBuffer r = new StringBuffer("[");
- for (int pos = size(); pos > 0; pos--)
+ boolean hasNext = itr.hasNext();
+ while (hasNext)
{
- r.append(itr.next());
- if (pos > 1)
+ Object o = itr.next();
+ if (o == this)
+ r.append("<this>");
+ else
+ r.append(o);
+ hasNext = itr.hasNext();
+ if (hasNext)
r.append(", ");
}
r.append("]");