1+ package com .rampatra .arrays ;
2+
3+ import java .util .ArrayList ;
4+ import java .util .List ;
5+
6+ public class FlattenArray {
7+
8+ /**
9+ * Given a nested array like [[1, 2], 3, [4]], return an array like [1, 2, 3, 4, 5].
10+ *
11+ * @param nestedArray an Object array
12+ * @return a list of all elements in the nestedArray but all at the same level
13+ */
14+ private static List <Integer > flattenArray (Object [] nestedArray ) {
15+ if (nestedArray == null || nestedArray .length == 0 ) return new ArrayList <>();
16+
17+ List <Integer > flattenedArray = new ArrayList <>();
18+
19+ for (Object obj : nestedArray ) {
20+ if (obj instanceof Object []) {
21+ flattenedArray .addAll (flattenArray ((Object []) obj ));
22+ } else if (obj instanceof Integer ) {
23+ flattenedArray .add ((Integer ) obj );
24+ }
25+ }
26+
27+ return flattenedArray ;
28+ }
29+
30+ public static void main (String [] args ) {
31+ System .out .println (flattenArray (null ));
32+ System .out .println (flattenArray (new Object []{null }));
33+ System .out .println (flattenArray (new Object []{new Object []{}}));
34+ System .out .println (flattenArray (new Object []{new Object []{1 , 2 }}));
35+ System .out .println (flattenArray (new Object []{1 , 2 , new Object []{4 , 5 }, 6 }));
36+ System .out .println (flattenArray (new Object []{new Object []{4 , 5 }, 1 , 2 , 6 }));
37+ System .out .println (flattenArray (new Object []{1 , 2 , 6 , new Object []{4 , 5 }}));
38+ }
39+ }
0 commit comments