diff options
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.java | 43 |
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)); } } |