[SCB-2598] optimize toArray performance (#3117)

diff --git a/common/common-protobuf/src/main/java/org/apache/servicecomb/codec/protobuf/definition/ProtobufManager.java b/common/common-protobuf/src/main/java/org/apache/servicecomb/codec/protobuf/definition/ProtobufManager.java
index f0b0fd2..0782178 100644
--- a/common/common-protobuf/src/main/java/org/apache/servicecomb/codec/protobuf/definition/ProtobufManager.java
+++ b/common/common-protobuf/src/main/java/org/apache/servicecomb/codec/protobuf/definition/ProtobufManager.java
@@ -19,6 +19,7 @@
 
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Objects;
 
 import javax.ws.rs.core.Response.Status;
 
@@ -68,8 +69,7 @@
       if (!uniqueOperationId.equals(that.uniqueOperationId)) {
         return false;
       }
-      return responseType != null ? responseType.equals(that.responseType)
-          : that.responseType == null;
+      return Objects.equals(responseType, that.responseType);
     }
 
     @Override
diff --git a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/RestObjectMapperFactory.java b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/RestObjectMapperFactory.java
index 51000b6..d54800a 100644
--- a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/RestObjectMapperFactory.java
+++ b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/RestObjectMapperFactory.java
@@ -45,7 +45,7 @@
     // not use mapper.findAndRegisterModules()
     // because we need to sort modules, so that customers can override our default module
     List<Module> modules = SPIServiceUtils.getOrLoadSortedService(Module.class);
-    mapper.registerModules(modules.toArray(new Module[modules.size()]));
+    mapper.registerModules(modules.toArray(new Module[0]));
   }
 
   public static AbstractRestObjectMapper getConsumerWriterMapper() {
diff --git a/core/src/main/java/org/apache/servicecomb/core/ConfigurationSpringInitializer.java b/core/src/main/java/org/apache/servicecomb/core/ConfigurationSpringInitializer.java
index d61d370..790b48a 100644
--- a/core/src/main/java/org/apache/servicecomb/core/ConfigurationSpringInitializer.java
+++ b/core/src/main/java/org/apache/servicecomb/core/ConfigurationSpringInitializer.java
@@ -192,7 +192,7 @@
         loader.getConfigModels()
             .forEach(configModel -> values.putAll(YAMLUtil.retrieveItems("", configModel.getConfig())));
 
-        propertyNames = values.keySet().toArray(new String[values.size()]);
+        propertyNames = values.keySet().toArray(new String[0]);
       }
 
       @Override
diff --git a/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/BeanUtils.java b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/BeanUtils.java
index 77abe72..ddbf554 100644
--- a/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/BeanUtils.java
+++ b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/BeanUtils.java
@@ -62,7 +62,7 @@
     Set<String> locationSet = new LinkedHashSet<>();
     addBeanLocation(locationSet, DEFAULT_BEAN_RESOURCE);
     addBeanLocation(locationSet, configLocations);
-    context = new ClassPathXmlApplicationContext(locationSet.toArray(new String[locationSet.size()]));
+    context = new ClassPathXmlApplicationContext(locationSet.toArray(new String[0]));
   }
 
   public static void addBeanLocation(Set<String> locationSet, String... location) {
diff --git a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/inject/PlaceholderResolver.java b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/inject/PlaceholderResolver.java
index 2093561..050bcf5 100644
--- a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/inject/PlaceholderResolver.java
+++ b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/inject/PlaceholderResolver.java
@@ -86,10 +86,7 @@
       resolve(row, replaced);
     }
 
-    for (int idx = 0; idx < replaced.size(); idx++) {
-      String row = replaced.get(idx);
-      replaced.set(idx, row.replace("\\$", "$"));
-    }
+    replaced.replaceAll(s -> s.replace("\\$", "$"));
     return replaced;
   }
 
diff --git a/foundations/foundation-ssl/src/main/java/org/apache/servicecomb/foundation/ssl/KeyStoreUtil.java b/foundations/foundation-ssl/src/main/java/org/apache/servicecomb/foundation/ssl/KeyStoreUtil.java
index 944761b..0666365 100644
--- a/foundations/foundation-ssl/src/main/java/org/apache/servicecomb/foundation/ssl/KeyStoreUtil.java
+++ b/foundations/foundation-ssl/src/main/java/org/apache/servicecomb/foundation/ssl/KeyStoreUtil.java
@@ -87,7 +87,7 @@
       CertificateFactory cf = CertificateFactory.getInstance("X.509");
       is = new FileInputStream(crlfile);
       Collection c = cf.generateCRLs(is);
-      return (CRL[]) c.toArray(new CRL[c.size()]);
+      return (CRL[]) c.toArray(new CRL[0]);
     } catch (CertificateException e) {
       throw new IllegalArgumentException("bad cert file.");
     } catch (FileNotFoundException e) {
diff --git a/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/http/StandardHttpServletRequestEx.java b/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/http/StandardHttpServletRequestEx.java
index c2d179b..3014574 100644
--- a/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/http/StandardHttpServletRequestEx.java
+++ b/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/http/StandardHttpServletRequestEx.java
@@ -123,7 +123,7 @@
   private Map<String, String[]> convertListMapToArrayMap(Map<String, List<String>> listMap) {
     Map<String, String[]> arrayMap = new HashMap<>();
     for (Entry<String, List<String>> entry : listMap.entrySet()) {
-      arrayMap.put(entry.getKey(), entry.getValue().toArray(new String[entry.getValue().size()]));
+      arrayMap.put(entry.getKey(), entry.getValue().toArray(new String[0]));
     }
     return arrayMap;
   }
diff --git a/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/http/VertxServerRequestToHttpServletRequest.java b/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/http/VertxServerRequestToHttpServletRequest.java
index 5649477..e0e72b0 100644
--- a/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/http/VertxServerRequestToHttpServletRequest.java
+++ b/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/http/VertxServerRequestToHttpServletRequest.java
@@ -134,7 +134,7 @@
     }
 
     List<String> paramList = this.vertxRequest.params().getAll(name);
-    return paramList.toArray(new String[paramList.size()]);
+    return paramList.toArray(new String[0]);
   }
 
   @Override
diff --git a/huawei-cloud/darklaunch/src/main/java/org/apache/servicecomb/darklaunch/oper/ConditionFactory.java b/huawei-cloud/darklaunch/src/main/java/org/apache/servicecomb/darklaunch/oper/ConditionFactory.java
index 2b18ac9..d7b410c 100644
--- a/huawei-cloud/darklaunch/src/main/java/org/apache/servicecomb/darklaunch/oper/ConditionFactory.java
+++ b/huawei-cloud/darklaunch/src/main/java/org/apache/servicecomb/darklaunch/oper/ConditionFactory.java
@@ -18,7 +18,6 @@
 package org.apache.servicecomb.darklaunch.oper;
 
 import java.util.Arrays;
-import java.util.stream.Collectors;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.servicecomb.darklaunch.DarklaunchRule;
@@ -47,9 +46,7 @@
 
   private static String[] split(String str, String sep) {
     return Arrays.stream(str.split(sep))
-        .filter(s -> !StringUtils.isEmpty(s))
-        .collect(Collectors.toList())
-        .toArray(new String[0]);
+            .filter(s -> !StringUtils.isEmpty(s)).toArray(String[]::new);
   }
 
   public static Condition buildRateCondition(String strCondition) {
diff --git a/providers/provider-springmvc/src/main/java/org/apache/servicecomb/provider/springmvc/reference/CommonToHttpServletRequest.java b/providers/provider-springmvc/src/main/java/org/apache/servicecomb/provider/springmvc/reference/CommonToHttpServletRequest.java
index 0a8b80e..69834eb 100644
--- a/providers/provider-springmvc/src/main/java/org/apache/servicecomb/provider/springmvc/reference/CommonToHttpServletRequest.java
+++ b/providers/provider-springmvc/src/main/java/org/apache/servicecomb/provider/springmvc/reference/CommonToHttpServletRequest.java
@@ -96,7 +96,7 @@
       return new String[0];
     }
 
-    return queryValues.toArray(new String[queryValues.size()]);
+    return queryValues.toArray(new String[0]);
   }
 
   @Override
@@ -148,7 +148,7 @@
       }
     }
 
-    return result.toArray(new Cookie[result.size()]);
+    return result.toArray(new Cookie[0]);
   }
 
   @Override
diff --git a/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/generator/SwaggerGeneratorUtils.java b/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/generator/SwaggerGeneratorUtils.java
index 4ceb2d6..61bd96f 100644
--- a/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/generator/SwaggerGeneratorUtils.java
+++ b/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/generator/SwaggerGeneratorUtils.java
@@ -103,7 +103,7 @@
     }
 
     List<Module> modules = SPIServiceUtils.getOrLoadSortedService(Module.class);
-    Json.mapper().registerModules(modules.toArray(new Module[modules.size()]));
+    Json.mapper().registerModules(modules.toArray(new Module[0]));
   }
 
   private SwaggerGeneratorUtils() {
@@ -163,7 +163,7 @@
     if (propertyDefinition.getSetter() != null) {
       Collections.addAll(annotations, propertyDefinition.getSetter().getAnnotated().getAnnotations());
     }
-    return annotations.toArray(new Annotation[annotations.size()]);
+    return annotations.toArray(new Annotation[0]);
   }
 
   public static String collectParameterName(java.lang.reflect.Parameter methodParameter) {
diff --git a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/arguments/consumer/ConsumerArgumentToBodyField.java b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/arguments/consumer/ConsumerArgumentToBodyField.java
index fb47f53..1fd5fda 100644
--- a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/arguments/consumer/ConsumerArgumentToBodyField.java
+++ b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/arguments/consumer/ConsumerArgumentToBodyField.java
@@ -48,9 +48,7 @@
       Map<String, Object> swaggerArguments,
       Map<String, Object> invocationArguments) {
     Object consumerArgument = invocationArguments.get(invocationArgumentName);
-    if (swaggerArguments.get(swaggerArgumentName) == null) {
-      swaggerArguments.put(swaggerArgumentName, new LinkedHashMap<String, Object>());
-    }
+    swaggerArguments.computeIfAbsent(swaggerArgumentName, k -> new LinkedHashMap<String, Object>());
     if (consumerArgument != null) {
       ((Map<String, Object>) swaggerArguments.get(swaggerArgumentName)).put(parameterName, consumerArgument);
     }
diff --git a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/converter/impl/part/PartListToPartArrayConverter.java b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/converter/impl/part/PartListToPartArrayConverter.java
index 5f64d70..50f5819 100644
--- a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/converter/impl/part/PartListToPartArrayConverter.java
+++ b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/converter/impl/part/PartListToPartArrayConverter.java
@@ -44,6 +44,6 @@
 
     @SuppressWarnings("unchecked")
     List<Part> partList = (List<Part>) value;
-    return partList.toArray(new Part[partList.size()]);
+    return partList.toArray(new Part[0]);
   }
 }
diff --git a/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/models/JaxrsImpl.java b/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/models/JaxrsImpl.java
index fe02aa2..21797d9 100644
--- a/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/models/JaxrsImpl.java
+++ b/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/models/JaxrsImpl.java
@@ -89,7 +89,7 @@
   @Path("/testListArray")
   @POST
   public String[] testListArray(List<String> s) {
-    return s.toArray(new String[s.size()]);
+    return s.toArray(new String[0]);
   }
 
   @Path("/testListList")
@@ -113,7 +113,7 @@
   @Path("/testObjectListArray")
   @POST
   public Person[] testObjectListArray(List<Person> s) {
-    return s.toArray(new Person[s.size()]);
+    return s.toArray(new Person[0]);
   }
 
   @Path("/testObjectListList")
diff --git a/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/models/PojoImpl.java b/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/models/PojoImpl.java
index 611a5c7..e9759cb 100644
--- a/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/models/PojoImpl.java
+++ b/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/models/PojoImpl.java
@@ -64,7 +64,7 @@
   }
 
   public String[] testListArray(List<String> s) {
-    return s.toArray(new String[s.size()]);
+    return s.toArray(new String[0]);
   }
 
   public List<String> testListList(List<String> s) {
@@ -80,7 +80,7 @@
   }
 
   public Person[] testObjectListArray(List<Person> s) {
-    return s.toArray(new Person[s.size()]);
+    return s.toArray(new Person[0]);
   }
 
   public List<Person> testObjectListList(List<Person> s) {
diff --git a/transports/transport-rest/transport-rest-servlet/src/main/java/org/apache/servicecomb/transport/rest/servlet/CseXmlWebApplicationContext.java b/transports/transport-rest/transport-rest-servlet/src/main/java/org/apache/servicecomb/transport/rest/servlet/CseXmlWebApplicationContext.java
index 687bbd3..f8831de 100644
--- a/transports/transport-rest/transport-rest-servlet/src/main/java/org/apache/servicecomb/transport/rest/servlet/CseXmlWebApplicationContext.java
+++ b/transports/transport-rest/transport-rest-servlet/src/main/java/org/apache/servicecomb/transport/rest/servlet/CseXmlWebApplicationContext.java
@@ -80,6 +80,6 @@
       }
     }
 
-    return locationSet.toArray(new String[locationSet.size()]);
+    return locationSet.toArray(new String[0]);
   }
 }