【发布时间】:2021-06-22 16:26:48
【问题描述】:
我有一个房间的对象列表:
class Room {
int guestCount;
List<String> sunglassBrands;
}
我想像这样将所有房间的客人总数和他们所有的太阳镜品牌放在一起:
class Guest {
int guestCount;
List<Sunglass> sunglasses;
}
class Sunglass {
String brandName;
}
现在,这可能是一种简单的方法:
AtomicInteger numberOfGuests = new AtomicInteger();
List<Sunglass> sunglassBrandsList = new ArrayList<>();
rooms.forEach(
room -> {
numberOfGuests.getAndAdd(room.getGuestCount());
sunglassBrandsList.addAll(
room.getSunglassBrands.stream()
.map(
brand -> {
Sunglass sunglass = new Sunglass();
sunglass.setBrandName(brand);
return sunglass;
})
.collect(Collectors.toList()));
});
Guest guest = new Guest();
guest.setGuestCount(numberOfGuests.get());
guest.setSunglassBrands(sunglassBrandsList);
这可以在一次迭代中以更优雅的方式完成吗?我想我可以在这里使用reduce,但我不太确定如何使用。
【问题讨论】:
标签: java collections java-stream