From b02b98609e412f93ee0aa832bb4d39715942f023 Mon Sep 17 00:00:00 2001 From: Eric Scharff Date: Wed, 26 Sep 2007 08:57:34 -0600 Subject: [PATCH] Added methods isEmpty(), putAll(), toArray() to interfaces List and Map --- classpath/java/util/ArrayList.java | 30 +++++++++++++++++++++++- classpath/java/util/Arrays.java | 8 +++++++ classpath/java/util/HashMap.java | 10 ++++++++ classpath/java/util/Hashtable.java | 8 +++++++ classpath/java/util/IdentityHashMap.java | 8 +++++++ classpath/java/util/LinkedList.java | 21 +++++++++++++++++ classpath/java/util/List.java | 4 ++++ classpath/java/util/Map.java | 4 ++++ classpath/java/util/Vector.java | 15 ++++++++++++ classpath/java/util/WeakHashMap.java | 8 +++++++ 10 files changed, 115 insertions(+), 1 deletion(-) diff --git a/classpath/java/util/ArrayList.java b/classpath/java/util/ArrayList.java index ed48fd2328..3589f648ca 100644 --- a/classpath/java/util/ArrayList.java +++ b/classpath/java/util/ArrayList.java @@ -13,7 +13,14 @@ public class ArrayList implements List { public ArrayList() { this(0); } - + + public ArrayList(Collection source) { + this(source.size()); + for (T o : source) { + add(o); + } + } + private void grow() { if (array == null || size >= array.length) { resize(array == null ? MinimumCapacity : array.length * 2); @@ -118,6 +125,27 @@ public class ArrayList implements List { return false; } + public boolean isEmpty() { + return size() == 0; + } + + public S[] toArray(S[] a) { + Object[] retVal = null; + + if (a.length >= size) { + retVal = a; + } else { + retVal = new Object[size]; + } + for (int i = 0; i < size; ++i) { + retVal[i] = array[i]; + } + if (a.length > size) { + a[size] = null; + } + return (S[])retVal; + } + public void clear() { array = null; size = 0; diff --git a/classpath/java/util/Arrays.java b/classpath/java/util/Arrays.java index d4813a9cc8..9e6a68eed7 100644 --- a/classpath/java/util/Arrays.java +++ b/classpath/java/util/Arrays.java @@ -38,6 +38,14 @@ public class Arrays { return array[index]; } + public S[] toArray(S[] a) { + return (S[])array; + } + + public boolean isEmpty() { + return size() == 0; + } + public T remove(int index) { throw new UnsupportedOperationException(); } diff --git a/classpath/java/util/HashMap.java b/classpath/java/util/HashMap.java index e3bede0d3e..90795391ef 100644 --- a/classpath/java/util/HashMap.java +++ b/classpath/java/util/HashMap.java @@ -44,6 +44,10 @@ public class HashMap implements Map { return r; } + public boolean isEmpty() { + return size() == 0; + } + public int size() { return size; } @@ -179,6 +183,12 @@ public class HashMap implements Map { return (c == null ? null : c.getValue()); } + public void putAll(Map elts) { + for (Map.Entry entry : elts.entrySet()) { + put(entry.getKey(), entry.getValue()); + } + } + public V remove(K key) { Cell c = removeCell(key); return (c == null ? null : c.getValue()); diff --git a/classpath/java/util/Hashtable.java b/classpath/java/util/Hashtable.java index 6bfd96b68d..6701ce49c8 100644 --- a/classpath/java/util/Hashtable.java +++ b/classpath/java/util/Hashtable.java @@ -15,6 +15,10 @@ public class Hashtable implements Map { return map.toString(); } + public synchronized boolean isEmpty() { + return map.isEmpty(); + } + public synchronized int size() { return map.size(); } @@ -35,6 +39,10 @@ public class Hashtable implements Map { return map.put(key, value); } + public synchronized void putAll(Map elts) { + map.putAll(elts); + } + public synchronized V remove(K key) { return map.remove(key); } diff --git a/classpath/java/util/IdentityHashMap.java b/classpath/java/util/IdentityHashMap.java index be58d2eee9..779cb2c2ff 100644 --- a/classpath/java/util/IdentityHashMap.java +++ b/classpath/java/util/IdentityHashMap.java @@ -11,6 +11,10 @@ public class IdentityHashMap implements Map { this(0); } + public boolean isEmpty() { + return map.isEmpty(); + } + public int size() { return map.size(); } @@ -31,6 +35,10 @@ public class IdentityHashMap implements Map { return map.put(key, value); } + public void putAll(Map elts) { + map.putAll(elts); + } + public V remove(K key) { return map.remove(key); } diff --git a/classpath/java/util/LinkedList.java b/classpath/java/util/LinkedList.java index 3cfa4447e1..f0980fb982 100644 --- a/classpath/java/util/LinkedList.java +++ b/classpath/java/util/LinkedList.java @@ -73,6 +73,23 @@ public class LinkedList implements List { } } + public S[] toArray(S[] a) { + Object[] retVal = null; + if (a.length >= size) { + retVal = a; + } else { + retVal = new Object[size]; + } + int i=0; + for (Object o : this) { + retVal[i++] = o; + } + if (a.length > size) { + a[size] = null; + } + return (S[])retVal; + } + public int size() { return size; } @@ -124,6 +141,10 @@ public class LinkedList implements List { return c.value; } + public boolean isEmpty() { + return size() == 0; + } + public T removeFirst() { if (front != null) { T v = front.value; diff --git a/classpath/java/util/List.java b/classpath/java/util/List.java index d23084f657..6b0dce20f1 100644 --- a/classpath/java/util/List.java +++ b/classpath/java/util/List.java @@ -4,4 +4,8 @@ public interface List extends Collection { public T get(int index); public T remove(int index); + + public boolean isEmpty(); + + public S[] toArray(S[] a); } diff --git a/classpath/java/util/Map.java b/classpath/java/util/Map.java index f82c8386e3..218665970a 100644 --- a/classpath/java/util/Map.java +++ b/classpath/java/util/Map.java @@ -1,6 +1,8 @@ package java.util; public interface Map { + public boolean isEmpty(); + public int size(); public boolean containsKey(K key); @@ -11,6 +13,8 @@ public interface Map { public V put(K key, V value); + public void putAll(Map elts); + public V remove(K key); public void clear(); diff --git a/classpath/java/util/Vector.java b/classpath/java/util/Vector.java index 1350ce3926..c1e465f175 100644 --- a/classpath/java/util/Vector.java +++ b/classpath/java/util/Vector.java @@ -11,6 +11,13 @@ public class Vector implements List { this(0); } + public Vector(List list) { + this(list.size()); + for (T o : list) { + add(o); + } + } + public synchronized int size() { return list.size(); } @@ -39,6 +46,14 @@ public class Vector implements List { return list.remove(index); } + public synchronized boolean isEmpty() { + return list.isEmpty(); + } + + public synchronized S[] toArray(S[] a) { + return list.toArray(a); + } + public T removeElementAt(int index) { return remove(index); } diff --git a/classpath/java/util/WeakHashMap.java b/classpath/java/util/WeakHashMap.java index 22edc2c311..a6a36779f3 100644 --- a/classpath/java/util/WeakHashMap.java +++ b/classpath/java/util/WeakHashMap.java @@ -26,6 +26,10 @@ public class WeakHashMap implements Map { } } + public boolean isEmpty() { + return map.isEmpty(); + } + public int size() { return map.size(); } @@ -50,6 +54,10 @@ public class WeakHashMap implements Map { return map.put(key, value); } + public void putAll(Map elts) { + map.putAll(elts); + } + public V remove(K key) { poll(); return map.remove(key);