You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by hy...@apache.org on 2020/03/21 09:43:49 UTC

[dubbo] branch master updated: polish: use java8 stream in merger implement (#5861)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 062e543  polish: use java8 stream in merger implement (#5861)
062e543 is described below

commit 062e5432a88fdeb4c7fb3efe6b003eaad2a7d45d
Author: Huangxuny1 <gh...@gmail.com>
AuthorDate: Sat Mar 21 17:43:09 2020 +0800

    polish: use java8 stream in merger implement (#5861)
---
 .../rpc/cluster/merger/DoubleArrayMerger.java      | 22 ++++++----------------
 .../dubbo/rpc/cluster/merger/IntArrayMerger.java   | 22 ++++++----------------
 .../dubbo/rpc/cluster/merger/ListMerger.java       | 16 ++++++++--------
 .../dubbo/rpc/cluster/merger/LongArrayMerger.java  | 22 ++++++----------------
 .../apache/dubbo/rpc/cluster/merger/MapMerger.java |  8 +++-----
 .../apache/dubbo/rpc/cluster/merger/SetMerger.java | 10 +++-------
 6 files changed, 32 insertions(+), 68 deletions(-)

diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/DoubleArrayMerger.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/DoubleArrayMerger.java
index 8026d8d..9dbe83a 100644
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/DoubleArrayMerger.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/DoubleArrayMerger.java
@@ -20,6 +20,9 @@ package org.apache.dubbo.rpc.cluster.merger;
 import org.apache.dubbo.common.utils.ArrayUtils;
 import org.apache.dubbo.rpc.cluster.Merger;
 
+import java.util.Arrays;
+import java.util.Objects;
+
 public class DoubleArrayMerger implements Merger<double[]> {
 
     @Override
@@ -27,21 +30,8 @@ public class DoubleArrayMerger implements Merger<double[]> {
         if (ArrayUtils.isEmpty(items)) {
             return new double[0];
         }
-        int total = 0;
-        for (double[] array : items) {
-            if (array != null) {
-                total += array.length;
-            }
-        }
-        double[] result = new double[total];
-        int index = 0;
-        for (double[] array : items) {
-            if (array != null) {
-                for (double item : array) {
-                    result[index++] = item;
-                }
-            }
-        }
-        return result;
+        return Arrays.stream(items).filter(Objects::nonNull)
+                .flatMapToDouble(Arrays::stream)
+                .toArray();
     }
 }
diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/IntArrayMerger.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/IntArrayMerger.java
index 6d49834..da676de 100644
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/IntArrayMerger.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/IntArrayMerger.java
@@ -20,6 +20,9 @@ package org.apache.dubbo.rpc.cluster.merger;
 import org.apache.dubbo.common.utils.ArrayUtils;
 import org.apache.dubbo.rpc.cluster.Merger;
 
+import java.util.Arrays;
+import java.util.Objects;
+
 public class IntArrayMerger implements Merger<int[]> {
 
     @Override
@@ -27,22 +30,9 @@ public class IntArrayMerger implements Merger<int[]> {
         if (ArrayUtils.isEmpty(items)) {
             return new int[0];
         }
-        int totalLen = 0;
-        for (int[] array : items) {
-            if (array != null) {
-                totalLen += array.length;
-            }
-        }
-        int[] result = new int[totalLen];
-        int index = 0;
-        for (int[] array : items) {
-            if (array != null) {
-                for (int item : array) {
-                    result[index++] = item;
-                }
-            }
-        }
-        return result;
+        return Arrays.stream(items).filter(Objects::nonNull)
+                .flatMapToInt(Arrays::stream)
+                .toArray();
     }
 
 }
diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/ListMerger.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/ListMerger.java
index 9c81854..d01f1f3 100644
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/ListMerger.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/ListMerger.java
@@ -20,9 +20,12 @@ package org.apache.dubbo.rpc.cluster.merger;
 import org.apache.dubbo.common.utils.ArrayUtils;
 import org.apache.dubbo.rpc.cluster.Merger;
 
-import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 public class ListMerger implements Merger<List<?>> {
 
@@ -31,13 +34,10 @@ public class ListMerger implements Merger<List<?>> {
         if (ArrayUtils.isEmpty(items)) {
             return Collections.emptyList();
         }
-        List<Object> result = new ArrayList<Object>();
-        for (List<?> item : items) {
-            if (item != null) {
-                result.addAll(item);
-            }
-        }
-        return result;
+        return Stream.of(items).filter(Objects::nonNull)
+                .flatMap(Collection::stream)
+                .collect(Collectors.toList());
+
     }
 
 }
diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/LongArrayMerger.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/LongArrayMerger.java
index 52b090f..4583e06 100644
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/LongArrayMerger.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/LongArrayMerger.java
@@ -20,6 +20,9 @@ package org.apache.dubbo.rpc.cluster.merger;
 import org.apache.dubbo.common.utils.ArrayUtils;
 import org.apache.dubbo.rpc.cluster.Merger;
 
+import java.util.Arrays;
+import java.util.Objects;
+
 public class LongArrayMerger implements Merger<long[]> {
 
     @Override
@@ -27,21 +30,8 @@ public class LongArrayMerger implements Merger<long[]> {
         if (ArrayUtils.isEmpty(items)) {
             return new long[0];
         }
-        int total = 0;
-        for (long[] array : items) {
-            if (array != null) {
-                total += array.length;
-            }
-        }
-        long[] result = new long[total];
-        int index = 0;
-        for (long[] array : items) {
-            if (array != null) {
-                for (long item : array) {
-                    result[index++] = item;
-                }
-            }
-        }
-        return result;
+        return Arrays.stream(items).filter(Objects::nonNull)
+                .flatMapToLong(Arrays::stream)
+                .toArray();
     }
 }
diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/MapMerger.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/MapMerger.java
index 9598ba7..484c4c2 100644
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/MapMerger.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/MapMerger.java
@@ -22,6 +22,8 @@ import org.apache.dubbo.rpc.cluster.Merger;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Stream;
 
 public class MapMerger implements Merger<Map<?, ?>> {
 
@@ -31,11 +33,7 @@ public class MapMerger implements Merger<Map<?, ?>> {
             return Collections.emptyMap();
         }
         Map<Object, Object> result = new HashMap<Object, Object>();
-        for (Map<?, ?> item : items) {
-            if (item != null) {
-                result.putAll(item);
-            }
-        }
+        Stream.of(items).filter(Objects::nonNull).forEach(result::putAll);
         return result;
     }
 
diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/SetMerger.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/SetMerger.java
index d2b7aeb..5b0dc5e 100644
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/SetMerger.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/SetMerger.java
@@ -21,7 +21,9 @@ import org.apache.dubbo.rpc.cluster.Merger;
 
 import java.util.Collections;
 import java.util.HashSet;
+import java.util.Objects;
 import java.util.Set;
+import java.util.stream.Stream;
 
 public class SetMerger implements Merger<Set<?>> {
 
@@ -31,13 +33,7 @@ public class SetMerger implements Merger<Set<?>> {
             return Collections.emptySet();
         }
         Set<Object> result = new HashSet<Object>();
-
-        for (Set<?> item : items) {
-            if (item != null) {
-                result.addAll(item);
-            }
-        }
-
+        Stream.of(items).filter(Objects::nonNull).forEach(result::addAll);
         return result;
     }
 }