aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/collect/CollectionUtils.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/collect/CollectionUtils.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/collect/CollectionUtils.java43
1 files changed, 12 insertions, 31 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/collect/CollectionUtils.java b/src/main/java/com/google/devtools/build/lib/collect/CollectionUtils.java
index 341e750b87..dc33350d6e 100644
--- a/src/main/java/com/google/devtools/build/lib/collect/CollectionUtils.java
+++ b/src/main/java/com/google/devtools/build/lib/collect/CollectionUtils.java
@@ -13,14 +13,17 @@
// limitations under the License.
package com.google.devtools.build.lib.collect;
-import static com.google.common.collect.Sets.newEnumSet;
+import static com.google.common.collect.ImmutableList.toImmutableList;
+import static java.util.stream.Collectors.toCollection;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Maps;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.util.Preconditions;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.Comparator;
import java.util.EnumSet;
@@ -28,6 +31,7 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Set;
/**
@@ -106,13 +110,7 @@ public final class CollectionUtils {
*/
@SuppressWarnings("unchecked")
public static <T> ImmutableList<T> asListWithoutNulls(T... elements) {
- ImmutableList.Builder<T> builder = ImmutableList.builder();
- for (T element : elements) {
- if (element != null) {
- builder.add(element);
- }
- }
- return builder.build();
+ return Arrays.stream(elements).filter(Objects::nonNull).collect(toImmutableList());
}
/**
@@ -139,11 +137,7 @@ public final class CollectionUtils {
* Given an iterable, returns an immutable iterable with the same contents.
*/
public static <T> Iterable<T> makeImmutable(Iterable<T> iterable) {
- if (isImmutable(iterable)) {
- return iterable;
- } else {
- return ImmutableList.copyOf(iterable);
- }
+ return isImmutable(iterable) ? iterable : ImmutableList.copyOf(iterable);
}
/**
@@ -178,14 +172,9 @@ public final class CollectionUtils {
public static <T extends Enum<T>> EnumSet<T> fromBits(int value, Class<T> clazz) {
T[] elements = clazz.getEnumConstants();
Preconditions.checkArgument(elements.length <= 32);
- ArrayList<T> result = new ArrayList<>();
- for (T element : elements) {
- if ((value & (1 << element.ordinal())) != 0) {
- result.add(element);
- }
- }
-
- return newEnumSet(result, clazz);
+ return Arrays.stream(elements)
+ .filter(element -> (value & (1 << element.ordinal())) != 0)
+ .collect(toCollection(() -> EnumSet.noneOf(clazz)));
}
/**
@@ -200,11 +189,7 @@ public final class CollectionUtils {
*/
public static <KEY_1, KEY_2, VALUE> ImmutableMap<KEY_1, ImmutableMap<KEY_2, VALUE>> toImmutable(
Map<KEY_1, Map<KEY_2, VALUE>> map) {
- ImmutableMap.Builder<KEY_1, ImmutableMap<KEY_2, VALUE>> builder = ImmutableMap.builder();
- for (Map.Entry<KEY_1, Map<KEY_2, VALUE>> entry : map.entrySet()) {
- builder.put(entry.getKey(), ImmutableMap.copyOf(entry.getValue()));
- }
- return builder.build();
+ return ImmutableMap.copyOf(Maps.transformValues(map, ImmutableMap::copyOf));
}
/**
@@ -212,10 +197,6 @@ public final class CollectionUtils {
*/
public static <KEY_1, KEY_2, VALUE> Map<KEY_1, Map<KEY_2, VALUE>> copyOf(
Map<KEY_1, ? extends Map<KEY_2, VALUE>> map) {
- Map<KEY_1, Map<KEY_2, VALUE>> result = new HashMap<>();
- for (Map.Entry<KEY_1, ? extends Map<KEY_2, VALUE>> entry : map.entrySet()) {
- result.put(entry.getKey(), new HashMap<>(entry.getValue()));
- }
- return result;
+ return new HashMap<>(Maps.transformValues(map, HashMap::new));
}
}