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 <90056662+dittot...@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) {