diff --git a/platform/util/src/com/intellij/util/containers/ContainerUtil.java b/platform/util/src/com/intellij/util/containers/ContainerUtil.java index 8f3b136bc6cf..a36fb2e50471 100644 --- a/platform/util/src/com/intellij/util/containers/ContainerUtil.java +++ b/platform/util/src/com/intellij/util/containers/ContainerUtil.java @@ -650,7 +650,7 @@ public class ContainerUtil extends ContainerUtilRt { } if (!result.isEmpty() && result.keySet().iterator().next() instanceof Comparable) { - //noinspection unchecked + //noinspection unchecked,rawtypes return new KeyOrderedMultiMap(result); } return result; @@ -1188,14 +1188,21 @@ public class ContainerUtil extends ContainerUtilRt { @NotNull @Contract(pure=true) - public static List findAll(@NotNull T[] collection, @NotNull Class instanceOf) { - return findAll(Arrays.asList(collection), instanceOf); + public static List findAll(@NotNull T[] array, @NotNull Class instanceOf) { + List result = new SmartList<>(); + for (final T t : array) { + if (instanceOf.isInstance(t)) { + //noinspection unchecked + result.add((V)t); + } + } + return result; } @NotNull @Contract(pure=true) public static V[] findAllAsArray(@NotNull T[] collection, @NotNull Class instanceOf) { - List list = findAll(Arrays.asList(collection), instanceOf); + List list = findAll(collection, instanceOf); V[] array = ArrayUtil.newArray(instanceOf, list.size()); return list.toArray(array); } @@ -1476,7 +1483,8 @@ public class ContainerUtil extends ContainerUtilRt { @Contract(pure=true) public static U findInstance(@NotNull T[] array, @NotNull Class aClass) { - return findInstance(Arrays.asList(array), aClass); + //noinspection unchecked + return (U)find(array, FilteringIterator.instanceOf(aClass)); } @NotNull @@ -2108,7 +2116,18 @@ public class ContainerUtil extends ContainerUtilRt { @NotNull @Contract(pure=true) public static List mapNotNull(@NotNull T[] array, @NotNull Function mapping) { - return mapNotNull(Arrays.asList(array), mapping); + if (array.length == 0) { + return emptyList(); + } + + List result = new ArrayList<>(array.length); + for (T t : array) { + final V o = mapping.fun(t); + if (o != null) { + result.add(o); + } + } + return result.isEmpty() ? emptyList() : result; } /** @@ -2288,7 +2307,10 @@ public class ContainerUtil extends ContainerUtilRt { @Contract(pure=true) public static boolean and(@NotNull T[] iterable, @NotNull Condition condition) { - return and(Arrays.asList(iterable), condition); + for (final T t : iterable) { + if (!condition.value(t)) return false; + } + return true; } @Contract(pure=true) @@ -2846,7 +2868,12 @@ public class ContainerUtil extends ContainerUtilRt { @NotNull @Contract(pure=true) public static List map2List(@NotNull T[] array, @NotNull Function mapper) { - return map2List(Arrays.asList(array), mapper); + if (array.length == 0) return emptyList(); + List list = new ArrayList<>(array.length); + for (final T t : array) { + list.add(mapper.fun(t)); + } + return list; } @NotNull @@ -2873,8 +2900,13 @@ public class ContainerUtil extends ContainerUtilRt { @NotNull @Contract(pure=true) - public static Set map2Set(@NotNull T[] collection, @NotNull Function mapper) { - return map2Set(Arrays.asList(collection), mapper); + public static Set map2Set(@NotNull T[] array, @NotNull Function mapper) { + if (array.length == 0) return Collections.emptySet(); + Set set = new HashSet<>(array.length); + for (final T t : array) { + set.add(mapper.fun(t)); + } + return set; } @NotNull