【发布时间】:2016-05-16 00:21:57
【问题描述】:
假设我们有两个 ArrayLists 用于两个对象,这两个对象都填充了东西。为了便于理解,一个是车牌的ArrayList,另一个是汽车的。
所有的汽车都被分配了一个有效的车牌,然后汽车得到了车牌的号码......
cars.addAll(plates.stream().filter(plate -> plate.getStatus() == PLATE_GOOD)
.map(plate -> new Car(plate.getNumber(), modelT())).collect(Collectors.toList()));
但随后车主需要将他们的车牌和汽车注册到车牌和汽车地图中。
registered = new HashMap<Plate, Car>();
for(Plate plate : plates)
if(plate.getStatus() == PLATE_GOOD)
for(Car car : cars)
if(car.getNumber() == plate.getNumber()) {
registered.put(plate, car);
break;
}
但 DMV 要求没有环路,并且业主将使用对方付费电话。
TL;DR Collect 调用具有多个谓词以填充对象映射?
【问题讨论】:
-
使用
Collectors.toMap(...)。 -
@Andreas 当然,但这并不能纠正我在这种情况下对多个参数的理解。但是,感谢您抽出宝贵时间,我很高兴知道这个个人难题有一个无循环的解决方案,假设您的评论暗示了这一点。