diff --git a/core/src/main/java/org/apache/spark/api/java/JavaSparkContextVarargsWorkaround.java b/core/src/main/java/org/apache/spark/api/java/JavaSparkContextVarargsWorkaround.java index 0dd8fafbf2c8..5cf31eaa7bbe 100644 --- a/core/src/main/java/org/apache/spark/api/java/JavaSparkContextVarargsWorkaround.java +++ b/core/src/main/java/org/apache/spark/api/java/JavaSparkContextVarargsWorkaround.java @@ -29,10 +29,7 @@ public final JavaRDD union(JavaRDD... rdds) { if (rdds.length == 0) { throw new IllegalArgumentException("Union called on empty list"); } - List> rest = new ArrayList<>(rdds.length - 1); - for (int i = 1; i < rdds.length; i++) { - rest.add(rdds[i]); - } + rest = populateRDDList(rdds); return union(rdds[0], rest); } @@ -40,10 +37,7 @@ public JavaDoubleRDD union(JavaDoubleRDD... rdds) { if (rdds.length == 0) { throw new IllegalArgumentException("Union called on empty list"); } - List rest = new ArrayList<>(rdds.length - 1); - for (int i = 1; i < rdds.length; i++) { - rest.add(rdds[i]); - } + rest = populateRDDList(rdds); return union(rdds[0], rest); } @@ -52,11 +46,16 @@ public final JavaPairRDD union(JavaPairRDD... rdds) { if (rdds.length == 0) { throw new IllegalArgumentException("Union called on empty list"); } - List> rest = new ArrayList<>(rdds.length - 1); + rest = populateRDDList(rdds); + return union(rdds[0], rest); + } + + private static final List populateRDDList(T[] rdds) { + List rest = new ArrayList<>(rdds.length - 1); for (int i = 1; i < rdds.length; i++) { rest.add(rdds[i]); } - return union(rdds[0], rest); + return rdds; } // These methods take separate "first" and "rest" elements to avoid having the same type erasure