Skip to content

Commit 406af2a

Browse files
authored
Fix generics in flatten array (exercism#2900)
The previous method signature didn't make sense because the tests were always giving a list of mixed objects. So, the method parameter could only take a List of mixed objects (i.e. T can only be an `Object`). This would have also meant that the method can only return a List of objects. Fixes exercism#2896
1 parent d53f6ab commit 406af2a

File tree

3 files changed

+11
-21
lines changed

3 files changed

+11
-21
lines changed

exercises/practice/flatten-array/.meta/config.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"aadityakulkarni",
77
"FridaTveit",
88
"jackattack24",
9+
"jagdish-15",
910
"jmrunkle",
1011
"jtigger",
1112
"kytrinyx",
Lines changed: 9 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,17 @@
11
import java.util.ArrayList;
2-
import java.util.Collections;
32
import java.util.List;
43

5-
final class Flattener {
4+
class Flattener {
65

7-
List flatten(final List nestedList) {
8-
if (nestedList.isEmpty()) {
9-
return new ArrayList<>();
10-
} else {
11-
final List result = new ArrayList();
12-
13-
final Object head = nestedList.get(0);
14-
final List tail = nestedList.subList(1, nestedList.size());
15-
16-
if (head instanceof List) {
17-
result.addAll(flatten((List) head));
18-
} else {
19-
result.add(head);
6+
List<Object> flatten(List<?> list) {
7+
List<Object> flattenedList = new ArrayList<>();
8+
for (Object element: list) {
9+
if (element instanceof List<?> listAsElement) {
10+
flattenedList.addAll(flatten(listAsElement));
11+
} else if (element != null) {
12+
flattenedList.add(element);
2013
}
21-
22-
result.addAll(flatten(tail));
23-
result.removeAll(Collections.singleton(null));
24-
return result;
2514
}
15+
return flattenedList;
2616
}
27-
2817
}

exercises/practice/flatten-array/src/main/java/Flattener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
class Flattener {
44

5-
<T> List<T> flatten(List<T> list) {
5+
List<Object> flatten(List<?> list) {
66
throw new UnsupportedOperationException("Delete this statement and write your own implementation.");
77
}
88

0 commit comments

Comments
 (0)