在Java中将对象的多个实例合并为一个实例

在Java中将对象的多个实例合并为一个实例,java,java-stream,Java,Java Stream,我有一节课 class Dealer { String location; List<Car> cars; } 有一个包含两个实例的列表: List<Dealer> dealers = [dealer1, dealer2]; 当然。但它不会特别漂亮,因为它有点奇怪。将经销商分解为汽车,将您的“流”平面映射为一个流(flatmap就是这样做的;让您将一个对象映射为一个流,然后将所有流“解包”为一个流),然后收集回列表,并使用它创建新的经销商 List<Ca

我有一节课

class Dealer {
  String location;
  List<Car> cars;
}
有一个包含两个实例的列表:

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

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

List<Car> allCars = dealers.stream()
  .map(Dealer::getCars)
  .flatMap(List::stream)
  .collect(Collectors.toList());
return new Dealer("Whatever location you want", allCars);
列出所有汽车=经销商。流()
.map(经销商::getCars)
.flatMap(列表::流)
.collect(Collectors.toList());
返回新经销商(“您想要的任何位置”,所有车辆);

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

List<Car> allCars = dealers.stream()
  .map(Dealer::getCars)
  .flatMap(List::stream)
  .collect(Collectors.toList());
return new Dealer("Whatever location you want", allCars);
列出所有汽车=经销商。流()
.map(经销商::getCars)
.flatMap(列表::流)
.collect(Collectors.toList());
返回新经销商(“您想要的任何位置”,所有车辆);

为什么你想要一个“经销商”而不是一个简单的组合列表?为什么你想要一个“经销商”而不是一个简单的组合列表?也许,一个
不同的
不会伤害或
。收集(收集然后(toList(),cars->新经销商(“location”,cars))
可能,一个
不同的
不会伤害或
。收集(收集然后(toList(),汽车->新经销商(“位置”,汽车)))
List<Car> allCars = dealers.stream()
  .map(Dealer::getCars)
  .flatMap(List::stream)
  .collect(Collectors.toList());
return new Dealer("Whatever location you want", allCars);