diff --git a/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/client/ApolloClient.java b/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/client/ApolloClient.java
index 130fc93..d838d34 100644
--- a/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/client/ApolloClient.java
+++ b/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/client/ApolloClient.java
@@ -148,9 +148,7 @@
         updateHandler.handle(DELETE, before);
         return;
       }
-      after.entrySet().forEach(stringObjectEntry -> {
-        String itemKey = stringObjectEntry.getKey();
-        Object itemValue = stringObjectEntry.getValue();
+      after.forEach((itemKey, itemValue) -> {
         if (!before.containsKey(itemKey)) {
           itemsCreated.put(itemKey, itemValue);
         } else if (!itemValue.equals(before.get(itemKey))) {
diff --git a/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/consumer/MicroserviceVersions.java b/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/consumer/MicroserviceVersions.java
index 5eecdf2..6d0a941 100644
--- a/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/consumer/MicroserviceVersions.java
+++ b/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/consumer/MicroserviceVersions.java
@@ -227,7 +227,7 @@
       MergedInstances mergedInstances = mergeInstances(pulledInstances, instances);
       instances = mergedInstances.instanceIdMap.values();
       // clear cache
-      versions.entrySet().forEach(versionEntry -> versionEntry.getValue().setInstances(new ArrayList<>()));
+      versions.forEach((key, value) -> value.setInstances(new ArrayList<>()));
       for (Entry<String, List<MicroserviceInstance>> entry : mergedInstances.microserviceIdMap.entrySet()) {
         // ensure microserviceVersion exists
         versions.computeIfAbsent(entry.getKey(),
diff --git a/handlers/handler-publickey-auth/src/main/java/org/apache/servicecomb/authentication/provider/AccessController.java b/handlers/handler-publickey-auth/src/main/java/org/apache/servicecomb/authentication/provider/AccessController.java
index cafd717..41170be 100644
--- a/handlers/handler-publickey-auth/src/main/java/org/apache/servicecomb/authentication/provider/AccessController.java
+++ b/handlers/handler-publickey-auth/src/main/java/org/apache/servicecomb/authentication/provider/AccessController.java
@@ -190,12 +190,9 @@
   }
 
   private void logConfigurations(Map<String, ConfigurationItem> configurations, boolean isWhite) {
-    configurations.entrySet().forEach(stringConfigurationItemEntry -> {
-      ConfigurationItem item = stringConfigurationItemEntry.getValue();
-      LOG.info((isWhite ? "White list " : "Black list ") + "config item: key=" + stringConfigurationItemEntry.getKey()
-          + ";category=" + item.category
-          + ";propertyName=" + item.propertyName
-          + ";rule=" + item.rule);
-    });
+    configurations.forEach((key, item) -> LOG.info((isWhite ? "White list " : "Black list ") + "config item: key=" + key
+            + ";category=" + item.category
+            + ";propertyName=" + item.propertyName
+            + ";rule=" + item.rule));
   }
 }
diff --git a/service-registry/registry-local/src/main/java/org/apache/servicecomb/localregistry/LocalRegistryStore.java b/service-registry/registry-local/src/main/java/org/apache/servicecomb/localregistry/LocalRegistryStore.java
index 1dfc9fd..db5ce5d 100644
--- a/service-registry/registry-local/src/main/java/org/apache/servicecomb/localregistry/LocalRegistryStore.java
+++ b/service-registry/registry-local/src/main/java/org/apache/servicecomb/localregistry/LocalRegistryStore.java
@@ -85,8 +85,7 @@
     selfMicroserviceInstance.setServiceId(selfMicroservice.getServiceId());
 
     List<RegistryBean> beans = loadYamlBeans();
-    BeanUtils.getBeansOfType(RegistryBean.class).entrySet()
-        .forEach(entry -> beans.add(entry.getValue()));
+    BeanUtils.getBeansOfType(RegistryBean.class).forEach((key, value) -> beans.add(value));
 
     initRegistryFromBeans(beans);
 
