From ed3a61538ebd776023168405befada19fe6e35ac Mon Sep 17 00:00:00 2001 From: Matt Bishop Date: Mon, 30 May 2016 10:47:28 -0700 Subject: [PATCH] SHIRO-566 Use Collections wrappers to save memory and cpu. --- .../org/apache/shiro/util/CollectionUtils.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/lang/src/main/java/org/apache/shiro/util/CollectionUtils.java b/lang/src/main/java/org/apache/shiro/util/CollectionUtils.java index 4b9c8e4788..67e990139d 100644 --- a/lang/src/main/java/org/apache/shiro/util/CollectionUtils.java +++ b/lang/src/main/java/org/apache/shiro/util/CollectionUtils.java @@ -18,7 +18,7 @@ */ package org.apache.shiro.util; -import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.LinkedHashSet; @@ -39,6 +39,11 @@ public static Set asSet(E... elements) { if (elements == null || elements.length == 0) { return Collections.emptySet(); } + + if (elements.length == 1) { + return Collections.singleton(elements[0]); + } + LinkedHashSet set = new LinkedHashSet(elements.length * 4 / 3 + 1); Collections.addAll(set, elements); return set; @@ -97,11 +102,9 @@ public static List asList(E... elements) { if (elements == null || elements.length == 0) { return Collections.emptyList(); } - // Avoid integer overflow when a large array is passed in - int capacity = computeListCapacity(elements.length); - ArrayList list = new ArrayList(capacity); - Collections.addAll(list, elements); - return list; + + // Integer overflow does not occur when a large array is passed in because the list array already exists + return Arrays.asList(elements); } /*public static Deque asDeque(E... elements) {