Конечно, это возможно.
ПРИМЕЧАНИЕ : Из вашего вопроса я понял, что вы хотите напечатать все поля всех объектов внутри объекта ObjD, где ObjD.d1 + ObjD.d2 равен некоторой конкретной сумме.Надеюсь, я правильно понял ваш запрос.
На самом деле это легко сделать с помощью метода фильтра из Streams API.
Код будет выглядеть примерно так:
int sum = 10;
objDS.stream()
.filter(objD -> objD.d1 + objD.d2 == sum)
.forEach(objD -> {
List<ObjC> objCS = objD.objCS;
objCS.forEach(objC -> {
List<ObjB> objBS = objC.objBS;
objBS.forEach(objB -> {
List<ObjA> objAS = objB.objAS;
objAS.forEach(objA -> {
System.out.println("ObjA.a1: " + objA.a1);
System.out.println("ObjA.a2: " + objA.a2);
});
System.out.println("ObjB.b1: " + objB.b1);
System.out.println("ObjB.b2: " + objB.b2);
});
System.out.println("ObjC.c1: " + objC.c1);
System.out.println("ObjC.c1: " + objC.c1);
});
System.out.println("ObjD.d1: " + objD.d1);
System.out.println("ObjD.d2: " + objD.d2);
});
Здесь я использую переменную суммы, чтобы проверить условие, которое вы упомянули.После того как список ObjD отфильтрован, у нас есть только объекты, у которых ObjD.d1 + ObjD.d2 равен сумме.
Кроме того, мы можем просто использовать метод forEach () для итерации по каждому списку и в соответствии с вашимпредпочтение печати переменных в любом порядке, который вы хотите.
Здесь я начну с печати внутреннего списка ObjAS, за которым следуют ObjBS, ObjCS и ObjDS.
Вы можете изменить порядок в соответствии с вашими требованиями.