diff --git a/classpath/java/util/AbstractCollection.java b/classpath/java/util/AbstractCollection.java index 5093b9a612..81500614ec 100644 --- a/classpath/java/util/AbstractCollection.java +++ b/classpath/java/util/AbstractCollection.java @@ -62,6 +62,10 @@ public abstract class AbstractCollection implements Collection { public abstract int size(); + public Object[] toArray() { + return toArray(new Object[size()]); + } + public S[] toArray(S[] array) { return Collections.toArray(this, array); } diff --git a/classpath/java/util/ArrayList.java b/classpath/java/util/ArrayList.java index 22726cb4fa..31e3dd5f58 100644 --- a/classpath/java/util/ArrayList.java +++ b/classpath/java/util/ArrayList.java @@ -159,10 +159,6 @@ public class ArrayList extends AbstractList { return size() == 0; } - public S[] toArray(S[] a) { - return Collections.toArray(this, a); - } - public void clear() { array = null; size = 0; diff --git a/classpath/java/util/Arrays.java b/classpath/java/util/Arrays.java index 219612f040..129b5f5528 100644 --- a/classpath/java/util/Arrays.java +++ b/classpath/java/util/Arrays.java @@ -81,6 +81,10 @@ public class Arrays { throw new UnsupportedOperationException(); } + public Object[] toArray() { + return toArray(new Object[size()]); + } + public S[] toArray(S[] a) { return (S[])array; } diff --git a/classpath/java/util/Collection.java b/classpath/java/util/Collection.java index aa8eee6d89..77fb9c8d3e 100644 --- a/classpath/java/util/Collection.java +++ b/classpath/java/util/Collection.java @@ -23,6 +23,8 @@ public interface Collection extends Iterable { public boolean remove(Object element); + public Object[] toArray(); + public S[] toArray(S[] array); public void clear(); diff --git a/classpath/java/util/Collections.java b/classpath/java/util/Collections.java index 70b6e03a48..00facfaa0e 100644 --- a/classpath/java/util/Collections.java +++ b/classpath/java/util/Collections.java @@ -129,6 +129,10 @@ public class Collections { synchronized (lock) { return collection.remove((T)e); } } + public Object[] toArray() { + return toArray(new Object[size()]); + } + public T[] toArray(T[] array) { synchronized (lock) { return collection.toArray(array); } } @@ -319,10 +323,13 @@ public class Collections { return inner.size(); } + public Object[] toArray() { + return toArray(new Object[size()]); + } + public S[] toArray(S[] array) { return inner.toArray(array); - } - + } } public static Set unmodifiableSet(Set hs) { diff --git a/classpath/java/util/HashMap.java b/classpath/java/util/HashMap.java index 2bc46b5e9d..ecae9a01f1 100644 --- a/classpath/java/util/HashMap.java +++ b/classpath/java/util/HashMap.java @@ -334,6 +334,10 @@ public class HashMap implements Map { return removeCell(e.getKey()) != null; } + public Object[] toArray() { + return toArray(new Object[size()]); + } + public T[] toArray(T[] array) { return Collections.toArray(this, array); } @@ -374,6 +378,10 @@ public class HashMap implements Map { return removeCell(key) != null; } + public Object[] toArray() { + return toArray(new Object[size()]); + } + public T[] toArray(T[] array) { return Collections.toArray(this, array); } @@ -412,6 +420,10 @@ public class HashMap implements Map { throw new UnsupportedOperationException(); } + public Object[] toArray() { + return toArray(new Object[size()]); + } + public T[] toArray(T[] array) { return Collections.toArray(this, array); } diff --git a/classpath/java/util/HashSet.java b/classpath/java/util/HashSet.java index b89c317a35..aa86f47df5 100644 --- a/classpath/java/util/HashSet.java +++ b/classpath/java/util/HashSet.java @@ -10,7 +10,7 @@ package java.util; -public class HashSet implements Set { +public class HashSet extends AbstractSet implements Set { private static final Object Value = new Object(); private final HashMap map; @@ -54,10 +54,6 @@ public class HashSet implements Set { return map.remove(element) != Value; } - public T[] toArray(T[] array) { - return Collections.toArray(this, array); - } - public void clear() { map.clear(); } diff --git a/classpath/java/util/LinkedList.java b/classpath/java/util/LinkedList.java index 49164d87fe..a437534363 100644 --- a/classpath/java/util/LinkedList.java +++ b/classpath/java/util/LinkedList.java @@ -85,10 +85,6 @@ public class LinkedList extends AbstractSequentialList { } } - public S[] toArray(S[] a) { - return Collections.toArray(this, a); - } - public int size() { return size; } diff --git a/classpath/java/util/TreeMap.java b/classpath/java/util/TreeMap.java index 99a7860e17..686e9ffda3 100644 --- a/classpath/java/util/TreeMap.java +++ b/classpath/java/util/TreeMap.java @@ -144,6 +144,10 @@ public class TreeMap implements Map { return set.removeAndReturn(new MyEntry(key, null)) != null; } + public Object[] toArray() { + return toArray(new Object[size()]); + } + public T[] toArray(T[] array) { return Collections.toArray(this, array); } @@ -182,6 +186,10 @@ public class TreeMap implements Map { throw new UnsupportedOperationException(); } + public Object[] toArray() { + return toArray(new Object[size()]); + } + public T[] toArray(T[] array) { return Collections.toArray(this, array); } diff --git a/classpath/java/util/Vector.java b/classpath/java/util/Vector.java index 99b3dd7138..4364c58281 100644 --- a/classpath/java/util/Vector.java +++ b/classpath/java/util/Vector.java @@ -77,10 +77,6 @@ public class Vector extends AbstractList { return list.isEmpty(); } - public synchronized S[] toArray(S[] a) { - return list.toArray(a); - } - public void removeElementAt(int index) { remove(index); }