diff --git a/commons-jcs-core/src/main/java/org/apache/commons/jcs3/engine/control/CompositeCache.java b/commons-jcs-core/src/main/java/org/apache/commons/jcs3/engine/control/CompositeCache.java
index 8dd1e26..2f52ba0 100644
--- a/commons-jcs-core/src/main/java/org/apache/commons/jcs3/engine/control/CompositeCache.java
+++ b/commons-jcs-core/src/main/java/org/apache/commons/jcs3/engine/control/CompositeCache.java
@@ -982,9 +982,8 @@
      */
     public Set<K> getKeySet(boolean localOnly)
     {
-        HashSet<K> allKeys = new HashSet<>();
+        HashSet<K> allKeys = new HashSet<>(memCache.getKeySet());
 
-        allKeys.addAll(memCache.getKeySet());
         for (AuxiliaryCache<K, V> aux : auxCaches)
         {
             if (aux != null)
diff --git a/commons-jcs-core/src/main/java/org/apache/commons/jcs3/utils/discovery/UDPDiscoveryService.java b/commons-jcs-core/src/main/java/org/apache/commons/jcs3/utils/discovery/UDPDiscoveryService.java
index 534ef1f..ddda523 100644
--- a/commons-jcs-core/src/main/java/org/apache/commons/jcs3/utils/discovery/UDPDiscoveryService.java
+++ b/commons-jcs-core/src/main/java/org/apache/commons/jcs3/utils/discovery/UDPDiscoveryService.java
@@ -258,8 +258,7 @@
      */
     protected ArrayList<String> getCacheNames()
     {
-        ArrayList<String> names = new ArrayList<>();
-        names.addAll( cacheNames );
+        ArrayList<String> names = new ArrayList<>(cacheNames);
         return names;
     }
 
@@ -343,9 +342,7 @@
      */
     public Set<IDiscoveryListener> getCopyOfDiscoveryListeners()
     {
-        Set<IDiscoveryListener> copy = new HashSet<>();
-        copy.addAll( getDiscoveryListeners() );
-        return copy;
+        return new HashSet<>(getDiscoveryListeners());
     }
 
     /**
diff --git a/commons-jcs-jcache/src/main/java/org/apache/commons/jcs3/jcache/cdi/CDIJCacheHelper.java b/commons-jcs-jcache/src/main/java/org/apache/commons/jcs3/jcache/cdi/CDIJCacheHelper.java
index 6a5eab8..7454c38 100644
--- a/commons-jcs-jcache/src/main/java/org/apache/commons/jcs3/jcache/cdi/CDIJCacheHelper.java
+++ b/commons-jcs-jcache/src/main/java/org/apache/commons/jcs3/jcache/cdi/CDIJCacheHelper.java
@@ -129,9 +129,7 @@
             annotations.add(set);
         }
 
-        final Set<Annotation> mtdAnnotations = new HashSet<>();
-        mtdAnnotations.addAll(Arrays.asList(ic.getMethod().getAnnotations()));
-
+        final Set<Annotation> mtdAnnotations = new HashSet<>(Arrays.asList(ic.getMethod().getAnnotations()));
         final CacheResult cacheResult = ic.getMethod().getAnnotation(CacheResult.class);
         final String cacheResultCacheResultName = cacheResult == null ? null : defaultName(ic.getMethod(), defaults, cacheResult.cacheName());
         final CacheResolverFactory cacheResultCacheResolverFactory = cacheResult == null ?
