Мне нужно напечатать каждый элемент ArrayList
.Это ArrayList
может быть типа ArrayList
или String
.Другие потомки этого списка также могут иметь тип list.
Это то, что я написал до сих пор:
public class Logic extends AppCompatActivity {
ArrayList<Object> parent = new ArrayList<>();
ArrayList<Object> check = new ArrayList<>();
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
parent.add("list 1");
check.add("list 2");
check.add(parent);
parent.add(check);
for (int i = 0; i < parent.size(); i++) {
if (!(parent.get(i) instanceof ArrayList)) {
Log.e("test",(String) parent.get(i));
} else {
printDetails((ArrayList<?>) parent.get(i));
}
}
}
public synchronized void printDetails(ArrayList<?> child) {
for (int i = 0; i < child.size(); i++) {
if (!(child.get(i) instanceof ArrayList)) {
Log.e("test1", (String) child.get(i));
} else {
printDetails((ArrayList<?>) child.get(i));
}
}
}
}
Но это печатает все резкие значения без ожидаемого порядка.Ожидается, что все значения должны печататься последовательно.Например, если первый элемент списка является строкой, он должен сначала напечатать строку, если это список, если вывести все значения этого дочернего списка, и если какой-либо элемент дочернего списка снова окажется в списке, он должен также напечатать эти значения и переместитьвернуться к следующему элементу родительского списка.
Если это вход:
ArrayList<Object> parent = new ArrayList<>();
ArrayList<Object> child1 = new ArrayList<>();
ArrayList<Object> subChild1= new ArrayList<>();
ArrayList<Object> nestedSubChild1= new ArrayList<>();
parent.add("list 1");
parent.add("list 1-2");
child1.add("childlist 2");
subChild1.add("sublist 1-1");
subChild1.add("sublist 1-2");
nestedSubChild1.add("nestedlist 1-1");
nestedSubChild1.add("nestedlist 1-2");
subChild1.add(nestedSubChild1);
child1.add(subChild1);
parent.add(child1);
Я хочу этот вывод
list 1
list 1-2
childlist 2
sublist 1-1
sublist 1-2
nestedlist 1-1
nestedlist 1-2
ДругойТребуется использовать рекурсию, чтобы код был эффективным.