From e66890a6d2b19f54fa6fd2eec7ef6339e79a9e32 Mon Sep 17 00:00:00 2001 From: Anton Makeev Date: Wed, 29 Aug 2018 17:37:07 +0200 Subject: [PATCH] ContainerUtil.unmodifiableOrEmpty* methods optimized for 1-element collections --- .../com/intellij/util/containers/ContainerUtil.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/platform/util/src/com/intellij/util/containers/ContainerUtil.java b/platform/util/src/com/intellij/util/containers/ContainerUtil.java index cf769c324380..c10a9426670f 100644 --- a/platform/util/src/com/intellij/util/containers/ContainerUtil.java +++ b/platform/util/src/com/intellij/util/containers/ContainerUtil.java @@ -212,6 +212,9 @@ public class ContainerUtil extends ContainerUtilRt { if (size == 0) { return emptyList(); } + if (size == 1) { + return Collections.singletonList(original.iterator().next()); + } else { return Collections.unmodifiableCollection(original); } @@ -224,6 +227,9 @@ public class ContainerUtil extends ContainerUtilRt { if (size == 0) { return emptyList(); } + if (size == 1) { + return Collections.singletonList(original.iterator().next()); + } else { return Collections.unmodifiableList(original); } @@ -236,6 +242,9 @@ public class ContainerUtil extends ContainerUtilRt { if (size == 0) { return Collections.emptySet(); } + if (size == 1) { + return Collections.singleton(original.iterator().next()); + } else { return Collections.unmodifiableSet(original); } @@ -248,6 +257,10 @@ public class ContainerUtil extends ContainerUtilRt { if (size == 0) { return Collections.emptyMap(); } + if (size == 1) { + Map.Entry entry = original.entrySet().iterator().next(); + return Collections.singletonMap(entry.getKey(), entry.getValue()); + } else { return Collections.unmodifiableMap(original); }