You can remove a letter from a nested array using recursion and instanceof
.
static void removeLeterNestedArrayTest() {
ArrayList arrayList = new ArrayList(
Arrays.asList("H", "e", "l", "l", "o",
new ArrayList(Arrays.asList( "w", "e", "l", "t",
new ArrayList(Arrays.asList( "l", "e", "m", "o", "n", null)),
"c", "e", "l", "l", true, "l")),
3, 5, "!", "e") );
displayArrayList (arrayList);
System.out.println();
removeLetterNestedArray(arrayList, "l");
displayArrayList (arrayList);
}
static void removeLetterNestedArray(ArrayList arrayList, String s) {
for (Object obj:arrayList) {
if (obj != null && obj instanceof ArrayList) {
removeLetterNestedArray((ArrayList) obj, s);
}
}
for (int i = 0; i < arrayList.size(); i++) {
if (arrayList.get(i) != null && arrayList.get(i).toString().equals(s))
{ arrayList.remove(i); i--; }
}
}
static void displayArrayList (ArrayList arrayList) {
for(Object obj: arrayList) {
if (obj != null) {
if (obj instanceof ArrayList)
displayArrayList((ArrayList)obj);
else System.out.print(obj.toString()); }
else System.out.print("null");
}
System.out.println();
}