You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by me...@apache.org on 2021/09/14 05:58:35 UTC

[dubbo] branch 3.0 updated: Inefficient Usages of Java Collections (#8784)

This is an automated email from the ASF dual-hosted git repository.

mercyblitz pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo.git


The following commit(s) were added to refs/heads/3.0 by this push:
     new 914c377  Inefficient Usages of Java Collections (#8784)
914c377 is described below

commit 914c3777bb4a8b6f7835dc6eb99d3f9dc17f459d
Author: DittoTool <90...@users.noreply.github.com>
AuthorDate: Tue Sep 14 13:58:18 2021 +0800

    Inefficient Usages of Java Collections (#8784)
    
    * Transform two LinkedHashMap objs to HashMap objs
    
    * Transform a LinkedHashMap obj to HashMap obj
    
    The map object is actually not used.
    
    * Transform a LinkedHashMap obj to HashMap obj
    
    * Transform a LinkedHashMap obj to HashMap obj
    
    * Transform a LinkedHashSet obj to HashSet obj
    
    * Transform a LinkedHashSet obj to HashSet obj
    
    * Transform a LinkedList obj to ArrayList obj
    
    * Transform an ArrayList obj to HashSet obj
    
    * Transform two ArrayList objs to LinkedList objs
    
    * Transform an ArrayList obj to LinkedList obj
    
    * Fix a compile error
    
    * Update FileSystemDynamicConfiguration.java
    
    * Update FileSystemDynamicConfiguration.java
---
 .../rpc/cluster/router/mesh/rule/VsDestinationGroup.java    |  6 +++---
 .../configcenter/file/FileSystemDynamicConfiguration.java   |  5 ++---
 .../org/apache/dubbo/common/extension/ExtensionLoader.java  | 13 +++++++------
 .../main/java/org/apache/dubbo/common/utils/TypeUtils.java  |  3 ++-
 .../org/apache/dubbo/config/bootstrap/DubboBootstrap.java   |  1 -
 .../processing/rest/DefaultServiceRestMetadataResolver.java |  4 ++--
 .../src/main/java/org/apache/dubbo/qos/textui/TLadder.java  |  4 ++--
 .../common/serialize/support/SerializableClassRegistry.java |  4 ++--
 .../actuate/endpoint/metadata/DubboReferencesMetadata.java  |  5 +++--
 .../factory/config/ServiceBeanIdConflictProcessor.java      |  4 ++--
 10 files changed, 25 insertions(+), 24 deletions(-)

diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/VsDestinationGroup.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/VsDestinationGroup.java
index 1d310ee..a5db532 100644
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/VsDestinationGroup.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/VsDestinationGroup.java
@@ -20,14 +20,14 @@ package org.apache.dubbo.rpc.cluster.router.mesh.rule;
 import org.apache.dubbo.rpc.cluster.router.mesh.rule.destination.DestinationRule;
 import org.apache.dubbo.rpc.cluster.router.mesh.rule.virtualservice.VirtualServiceRule;
 
-import java.util.ArrayList;
+import java.util.LinkedList;
 import java.util.List;
 
 
 public class VsDestinationGroup {
     private String appName;
-    private List<VirtualServiceRule> virtualServiceRuleList = new ArrayList<>();
-    private List<DestinationRule> destinationRuleList = new ArrayList<>();
+    private List<VirtualServiceRule> virtualServiceRuleList = new LinkedList<>();
+    private List<DestinationRule> destinationRuleList = new LinkedList<>();
 
     public String getAppName() {
         return appName;
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfiguration.java b/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfiguration.java
index 2dcf71d..fa7467c 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfiguration.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfiguration.java
@@ -44,7 +44,6 @@ import java.nio.file.WatchService;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
 import java.util.LinkedList;
 import java.util.List;
@@ -201,7 +200,7 @@ public class FileSystemDynamicConfiguration extends TreePathDynamicConfiguration
         this.rootDirectory = rootDirectory;
         this.encoding = encoding;
         this.processingDirectories = initProcessingDirectories();
-        this.listenersRepository = new LinkedHashMap<>();
+        this.listenersRepository = new HashMap<>();
         registerDubboShutdownHook();
     }
 
@@ -214,7 +213,7 @@ public class FileSystemDynamicConfiguration extends TreePathDynamicConfiguration
         this.rootDirectory = rootDirectory;
         this.encoding = encoding;
         this.processingDirectories = initProcessingDirectories();
-        this.listenersRepository = new LinkedHashMap<>();
+        this.listenersRepository = new HashMap<>();
         this.scopeModel = scopeModel;
         registerDubboShutdownHook();
     }
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java
index a94600b..ce6254c 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java
@@ -292,7 +292,8 @@ public class ExtensionLoader<T> {
         // solve the bug of using @SPI's wrapper method to report a null pointer exception.
         Map<Class<?>, T> activateExtensionsMap = new TreeMap<>(activateComparator);
         List<String> names = values == null ? new ArrayList<>(0) : asList(values);
-        if (!names.contains(REMOVE_VALUE_PREFIX + DEFAULT_KEY)) {
+        Set<String> namesSet = new HashSet<>(names);
+        if (!namesSet.contains(REMOVE_VALUE_PREFIX + DEFAULT_KEY)) {
             if (cachedActivateGroups.size() == 0) {
                 synchronized (cachedActivateGroups) {
                     // cache all extensions
@@ -323,8 +324,8 @@ public class ExtensionLoader<T> {
             // traverse all cached extensions
             cachedActivateGroups.forEach((name, activateGroup) -> {
                 if (isMatchGroup(group, activateGroup)
-                    && !names.contains(name)
-                    && !names.contains(REMOVE_VALUE_PREFIX + name)
+                    && !namesSet.contains(name)
+                    && !namesSet.contains(REMOVE_VALUE_PREFIX + name)
                     && isActive(cachedActivateValues.get(name), url)) {
 
                     activateExtensionsMap.put(getExtensionClass(name), getExtension(name));
@@ -332,14 +333,14 @@ public class ExtensionLoader<T> {
             });
         }
 
-        if (names.contains(DEFAULT_KEY)) {
+        if (namesSet.contains(DEFAULT_KEY)) {
             // will affect order
             // `ext1,default,ext2` means ext1 will happens before all of the default extensions while ext2 will after them
             ArrayList<T> extensionsResult = new ArrayList<>(activateExtensionsMap.size() + names.size());
             for (int i = 0; i < names.size(); i++) {
                 String name = names.get(i);
                 if (!name.startsWith(REMOVE_VALUE_PREFIX)
-                    && !names.contains(REMOVE_VALUE_PREFIX + name)) {
+                    && !namesSet.contains(REMOVE_VALUE_PREFIX + name)) {
                     if (!DEFAULT_KEY.equals(name)) {
                         if (containsExtension(name)) {
                             extensionsResult.add(getExtension(name));
@@ -355,7 +356,7 @@ public class ExtensionLoader<T> {
             for (int i = 0; i < names.size(); i++) {
                 String name = names.get(i);
                 if (!name.startsWith(REMOVE_VALUE_PREFIX)
-                    && !names.contains(REMOVE_VALUE_PREFIX + name)) {
+                    && !namesSet.contains(REMOVE_VALUE_PREFIX + name)) {
                     if (!DEFAULT_KEY.equals(name)) {
                         if (containsExtension(name)) {
                             activateExtensionsMap.put(getExtensionClass(name), getExtension(name));
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/TypeUtils.java b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/TypeUtils.java
index 2e53296..3b2733f 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/TypeUtils.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/TypeUtils.java
@@ -21,6 +21,7 @@ import java.lang.reflect.Type;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.LinkedList;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
 import java.util.Set;
@@ -79,7 +80,7 @@ public interface TypeUtils {
 
     static List<Class<?>> findActualTypeArguments(Type type, Class<?> interfaceClass) {
 
-        List<Class<?>> actualTypeArguments = new LinkedList<>();
+        List<Class<?>> actualTypeArguments = new ArrayList<>();
 
         getAllGenericTypes(type, t -> isAssignableFrom(interfaceClass, getRawClass(t)))
                 .forEach(parameterizedType -> {
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java
index 2f9d7f9..7fdf300 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java
@@ -648,7 +648,6 @@ public final class DubboBootstrap {
     }
     /* serve for builder apis, end */
 
-
     public Module newModule() {
         return new Module(applicationModel.newModule());
     }
diff --git a/dubbo-metadata/dubbo-metadata-processor/src/main/java/org/apache/dubbo/metadata/annotation/processing/rest/DefaultServiceRestMetadataResolver.java b/dubbo-metadata/dubbo-metadata-processor/src/main/java/org/apache/dubbo/metadata/annotation/processing/rest/DefaultServiceRestMetadataResolver.java
index 6a191e5..698b58a 100644
--- a/dubbo-metadata/dubbo-metadata-processor/src/main/java/org/apache/dubbo/metadata/annotation/processing/rest/DefaultServiceRestMetadataResolver.java
+++ b/dubbo-metadata/dubbo-metadata-processor/src/main/java/org/apache/dubbo/metadata/annotation/processing/rest/DefaultServiceRestMetadataResolver.java
@@ -26,7 +26,7 @@ import javax.lang.model.element.ExecutableElement;
 import javax.lang.model.element.TypeElement;
 import javax.lang.model.element.VariableElement;
 import javax.lang.model.type.TypeMirror;
-import java.util.LinkedHashSet;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
@@ -61,7 +61,7 @@ public class DefaultServiceRestMetadataResolver extends AbstractServiceRestMetad
             "application/*+xml;charset=UTF-8"
     );
 
-    private final Set<ExecutableElement> hasComplexParameterTypeMethods = new LinkedHashSet<>();
+    private final Set<ExecutableElement> hasComplexParameterTypeMethods = new HashSet<>();
 
     @Override
     public boolean supports(ProcessingEnvironment processingEnvironment, TypeElement serviceType) {
diff --git a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/textui/TLadder.java b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/textui/TLadder.java
index 1292aac..0f0ef48 100644
--- a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/textui/TLadder.java
+++ b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/textui/TLadder.java
@@ -16,7 +16,7 @@
  */
 package org.apache.dubbo.qos.textui;
 
-import java.util.ArrayList;
+import java.util.LinkedList;
 import java.util.List;
 
 import static org.apache.dubbo.common.utils.StringUtils.repeat;
@@ -35,7 +35,7 @@ public class TLadder implements TComponent {
     // indent length
     private static final int INDENT_STEP = 2;
 
-    private final List<String> items = new ArrayList<String>();
+    private final List<String> items = new LinkedList<String>();
 
 
     @Override
diff --git a/dubbo-serialization/dubbo-serialization-api/src/main/java/org/apache/dubbo/common/serialize/support/SerializableClassRegistry.java b/dubbo-serialization/dubbo-serialization-api/src/main/java/org/apache/dubbo/common/serialize/support/SerializableClassRegistry.java
index f7c96e5..591ba0e 100644
--- a/dubbo-serialization/dubbo-serialization-api/src/main/java/org/apache/dubbo/common/serialize/support/SerializableClassRegistry.java
+++ b/dubbo-serialization/dubbo-serialization-api/src/main/java/org/apache/dubbo/common/serialize/support/SerializableClassRegistry.java
@@ -16,7 +16,7 @@
  */
 package org.apache.dubbo.common.serialize.support;
 
-import java.util.LinkedHashMap;
+import java.util.HashMap;
 import java.util.Map;
 
 /**
@@ -26,7 +26,7 @@ import java.util.Map;
 public abstract class SerializableClassRegistry {
 
 
-    private static final Map<Class<?>, Object> REGISTRATIONS = new LinkedHashMap<>();
+    private static final Map<Class<?>, Object> REGISTRATIONS = new HashMap<>();
 
     /**
      * only supposed to be called at startup time
diff --git a/dubbo-spring-boot/dubbo-spring-boot-compatible/actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/metadata/DubboReferencesMetadata.java b/dubbo-spring-boot/dubbo-spring-boot-compatible/actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/metadata/DubboReferencesMetadata.java
index c3d8ffb..7c51ccf 100644
--- a/dubbo-spring-boot/dubbo-spring-boot-compatible/actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/metadata/DubboReferencesMetadata.java
+++ b/dubbo-spring-boot/dubbo-spring-boot-compatible/actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/metadata/DubboReferencesMetadata.java
@@ -24,6 +24,7 @@ import org.apache.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotati
 import org.springframework.beans.factory.annotation.InjectionMetadata;
 import org.springframework.stereotype.Component;
 
+import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.Map;
 
@@ -37,7 +38,7 @@ public class DubboReferencesMetadata extends AbstractDubboMetadata {
 
     public Map<String, Map<String, Object>> references() {
 
-        Map<String, Map<String, Object>> referencesMetadata = new LinkedHashMap<>();
+        Map<String, Map<String, Object>> referencesMetadata = new HashMap<>();
 
         ReferenceAnnotationBeanPostProcessor beanPostProcessor = getReferenceAnnotationBeanPostProcessor();
 
@@ -50,7 +51,7 @@ public class DubboReferencesMetadata extends AbstractDubboMetadata {
 
     private Map<String, Map<String, Object>> buildReferencesMetadata(
             Map<InjectionMetadata.InjectedElement, ReferenceBean<?>> injectedElementReferenceBeanMap) {
-        Map<String, Map<String, Object>> referencesMetadata = new LinkedHashMap<>();
+        Map<String, Map<String, Object>> referencesMetadata = new HashMap<>();
 
         for (Map.Entry<InjectionMetadata.InjectedElement, ReferenceBean<?>> entry :
                 injectedElementReferenceBeanMap.entrySet()) {
diff --git a/dubbo-spring-boot/dubbo-spring-boot-compatible/autoconfigure/src/main/java/org/apache/dubbo/spring/boot/beans/factory/config/ServiceBeanIdConflictProcessor.java b/dubbo-spring-boot/dubbo-spring-boot-compatible/autoconfigure/src/main/java/org/apache/dubbo/spring/boot/beans/factory/config/ServiceBeanIdConflictProcessor.java
index 77e0625..540acf6 100644
--- a/dubbo-spring-boot/dubbo-spring-boot-compatible/autoconfigure/src/main/java/org/apache/dubbo/spring/boot/beans/factory/config/ServiceBeanIdConflictProcessor.java
+++ b/dubbo-spring-boot/dubbo-spring-boot-compatible/autoconfigure/src/main/java/org/apache/dubbo/spring/boot/beans/factory/config/ServiceBeanIdConflictProcessor.java
@@ -29,7 +29,7 @@ import org.springframework.core.Ordered;
 import org.springframework.core.PriorityOrdered;
 
 import java.util.HashMap;
-import java.util.LinkedHashSet;
+import java.util.HashSet;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
@@ -59,7 +59,7 @@ public class ServiceBeanIdConflictProcessor implements MergedBeanDefinitionPostP
     /**
      * Holds the bean names of {@link ServiceBean} or {@link ServiceConfig}.
      */
-    private Set<String> conflictedBeanNames = new LinkedHashSet<>();
+    private Set<String> conflictedBeanNames = new HashSet<>();
 
     @Override
     public void postProcessMergedBeanDefinition(RootBeanDefinition beanDefinition, Class<?> beanType, String beanName) {