如何从集合中查找对象的一对不同字段

问题描述 投票:0回答:1

我有课

class Vehicle {
    VehicleType type;
    String regCode;
}

和枚举

enum VehicleType {
    CAR,
    BUS
}

如果我有一个具有这样值的车辆列表

 [
 {type: CAR, regCode: "AB11"},
 {type: BUS, regCode: "XY12"},
 {type: CAR, regCode: "AB22"}, 
 {type: BUS, regCode: "AB22"}
 ]

如何使用一个流获取不同的类型和regCode?

我期待这样的事情:

Pair<Set<VehicleType>, Set<String>> result = {[CAR, BUS], ["AB11", "XY12", "AB22"]}

任何其他格式也可以。

java collections java-stream grouping
1个回答
1
投票

将车辆一分为二是可行的,但结果不会很好。

我会进行一个简单的循环

public static Pair<Set<VehicleType>, Set<String>> Bisect(Iterable<Vehicle> vehicles)
{
    final var types = new HashSet<VehicleType>();
    final var regCodes = new HashSet<String>();
    for (final Vehicle vehicle : vehicles)
    {
        types.add(vehicle.type);
        regCodes.add(vehicle.regCode);
    }
    return new Pair(types, regCodes);
}
© www.soinside.com 2019 - 2024. All rights reserved.