Я не виню вас, учитывая, что вы новичок в потоковом API, но ваш подход слишком сложен.
Я бы лично использовал этот подход для простоты и удобочитаемости.
list1.stream() // Stream<Object1>
.flatMap(s -> s.getList2().stream()) // Stream<Object2>
.flatMap(s -> s.getList3().stream()) // Stream<Object3>
.count(); // return the count of all Object3 instances