You can do this with flatMap :
List<FooBO> list1 = objects.get(1).getObjects().stream() .flatMap (b -> b.getAffiliates().stream()) .map(BazBo::getPriceList) .collect(Collectors.toList());
Edit:
Since objects.get(1).getObjects() seems to return a List<Object> , a throw is required. To be safe, you can also add a filter that ensures that the Object type is indeed BarBO before translation:
List<FooBO> list1 = objects.get(1).getObjects().stream() .filter (o -> (o instanceof BarBo)) .map (o -> (BarBO)o) .flatMap (b -> b.getAffiliates().stream()) .map(BazBo::getPriceList) .collect(Collectors.toList());
EDIT:
Here's the answer with the class names of the editable question:
List<PriceList> priceLists = distObjects.stream() .flatMap (g -> g.getAffiliates().stream()) .map(Affiliate::getPriceList) .collect(Collectors.toList());
source share