【发布时间】:2021-11-04 17:19:36
【问题描述】:
我正在尝试返回没有重复属性的List<Object>(使用CSVRecord)。
我收到了这样一份 CSV:
brand;color
bmw;red
bmw;blue
jaguar;yellow
jaguar;red
mercedes;bleu
fiat;green
汽车类看起来像(例如):
@Builder
@Data
public class Car {
private String brand;
private List<String> color;
}
我有一个这样的方法(仅作为示例):
public List<Car> convert(List<CSVRecord> csvRecordList) {
Map<Car, List<CSVRecord>> csvRecordsByCar = csvRecordList.stream()
.collect(Collectors.groupingBy(csvRecord -> Car.builder()
.brand(csvRecord.get("brand"))
.color(Collections.singletonList(csvRecord.get("color")))
.build()
));
return csvRecordsByCar .entrySet().stream()
.map((Map.Entry<Car, List<CSVRecord>> csvRecordByCar) ->
Car.builder()
.brand(csvRecordByCar.getKey().getBrand())
.color(csvRecordByCar.getKey().getColor())
.build()
)
.collect(Collectors.toList());
}
现在它返回给我一个带有重复品牌的Car 列表对象。我想要的是不要有重复的品牌并在列表中合并品牌的颜色,例如:
Car{
brand: "bmw",
color: ["red", "blue"]
}
我是java新手。
【问题讨论】:
-
你能分享你的车课吗?
标签: java java-8 java-stream lombok