Add Sets.addAll() utility method.
Update to Maps.pulAll() per Scott.
Patch by: bobv
Review by: scottb
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@5908 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/util/collect/Maps.java b/dev/core/src/com/google/gwt/dev/util/collect/Maps.java
index 1cc6899..0d083a3 100644
--- a/dev/core/src/com/google/gwt/dev/util/collect/Maps.java
+++ b/dev/core/src/com/google/gwt/dev/util/collect/Maps.java
@@ -109,7 +109,7 @@
K key = map.keySet().iterator().next();
result.put(key, map.get(key));
result.putAll(toAdd);
- return normalize(result);
+ return result;
}
default:
map.putAll(toAdd);
diff --git a/dev/core/src/com/google/gwt/dev/util/collect/Sets.java b/dev/core/src/com/google/gwt/dev/util/collect/Sets.java
index b98d3d8..b5179f8 100644
--- a/dev/core/src/com/google/gwt/dev/util/collect/Sets.java
+++ b/dev/core/src/com/google/gwt/dev/util/collect/Sets.java
@@ -15,6 +15,7 @@
*/
package com.google.gwt.dev.util.collect;
+import java.util.Collection;
import java.util.Collections;
import java.util.Set;
@@ -51,6 +52,32 @@
}
}
+ public static <T> Set<T> addAll(Set<T> set, Collection<T> toAdd) {
+ switch (toAdd.size()) {
+ case 0:
+ return set;
+ case 1:
+ return add(set, toAdd.iterator().next());
+ }
+
+ switch (set.size()) {
+ case 0:
+ // Empty -> HashSet
+ return new HashSet<T>(toAdd);
+ case 1: {
+ // Singleton -> HashSet
+ Set<T> result = new HashSet<T>();
+ result.add(set.iterator().next());
+ result.addAll(toAdd);
+ return result;
+ }
+ default:
+ // HashSet
+ set.addAll(toAdd);
+ return set;
+ }
+ }
+
public static <T> Set<T> create() {
return Collections.emptySet();
}