0

我有一堂课

class Dealer {
  String location;
  List<Car> cars;
}

我有这个类的 2 个实例

dealer1 = new Dealer("abc", ["Acura", "Honda"]);
dealer2 = new Dealer("xyz", ["BMW", "Audi"]);

有一个包含两个实例的列表:

List<Dealer> dealers = [dealer1, dealer2];

是否有 Java Stream 方法可以将经销商列表合并到一个经销商中,独立于位置但结合所有经销商可用的汽车列表?

最终结果对象:

Dealer(["Acura", "Honda", "BMW", "Audi"])
4

1 回答 1

2

当然。但它不会特别漂亮,因为它有点奇怪。将经销商分解为汽车,将您的“流的流”平面映射为一个流(这就是平面图的作用;让您将一个对象映射到一个流中,然后将所有流“解包”到一个流中),然后收集回列表,并用它来建立一个新的经销商。

List<Car> allCars = dealers.stream()
  .map(Dealer::getCars)
  .flatMap(List::stream)
  .collect(Collectors.toList());
return new Dealer("Whatever location you want", allCars);
于 2020-07-30T23:52:16.613 回答