From 0a7f94abfe62db3bddac869887bd6f200595a89f Mon Sep 17 00:00:00 2001 From: Joel Dice <git@seibutsu.mailsnare.net> Date: Tue, 4 Aug 2009 17:36:25 -0600 Subject: [PATCH] add java.util.Collection.toArray() --- classpath/java/util/AbstractCollection.java | 4 ++++ classpath/java/util/ArrayList.java | 4 ---- classpath/java/util/Arrays.java | 4 ++++ classpath/java/util/Collection.java | 2 ++ classpath/java/util/Collections.java | 11 +++++++++-- classpath/java/util/HashMap.java | 12 ++++++++++++ classpath/java/util/HashSet.java | 6 +----- classpath/java/util/LinkedList.java | 4 ---- classpath/java/util/TreeMap.java | 8 ++++++++ classpath/java/util/Vector.java | 4 ---- 10 files changed, 40 insertions(+), 19 deletions(-) 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<T> implements Collection<T> { public abstract int size(); + public Object[] toArray() { + return toArray(new Object[size()]); + } + public <S> 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<T> extends AbstractList<T> { return size() == 0; } - public <S> 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> 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<T> extends Iterable<T> { public boolean remove(Object element); + public Object[] toArray(); + public <S> 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> 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> S[] toArray(S[] array) { return inner.toArray(array); - } - + } } public static <T> Set<T> unmodifiableSet(Set<T> 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<K, V> implements Map<K, V> { return removeCell(e.getKey()) != null; } + public Object[] toArray() { + return toArray(new Object[size()]); + } + public <T> T[] toArray(T[] array) { return Collections.toArray(this, array); } @@ -374,6 +378,10 @@ public class HashMap<K, V> implements Map<K, V> { return removeCell(key) != null; } + public Object[] toArray() { + return toArray(new Object[size()]); + } + public <T> T[] toArray(T[] array) { return Collections.toArray(this, array); } @@ -412,6 +420,10 @@ public class HashMap<K, V> implements Map<K, V> { throw new UnsupportedOperationException(); } + public Object[] toArray() { + return toArray(new Object[size()]); + } + public <T> 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<T> implements Set<T> { +public class HashSet<T> extends AbstractSet<T> implements Set<T> { private static final Object Value = new Object(); private final HashMap<T, Object> map; @@ -54,10 +54,6 @@ public class HashSet<T> implements Set<T> { return map.remove(element) != Value; } - public <T> 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<T> extends AbstractSequentialList<T> { } } - public <S> 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<K,V> implements Map<K,V> { return set.removeAndReturn(new MyEntry(key, null)) != null; } + public Object[] toArray() { + return toArray(new Object[size()]); + } + public <T> T[] toArray(T[] array) { return Collections.toArray(this, array); } @@ -182,6 +186,10 @@ public class TreeMap<K,V> implements Map<K,V> { throw new UnsupportedOperationException(); } + public Object[] toArray() { + return toArray(new Object[size()]); + } + public <T> 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<T> extends AbstractList<T> { return list.isEmpty(); } - public synchronized <S> S[] toArray(S[] a) { - return list.toArray(a); - } - public void removeElementAt(int index) { remove(index); }