如何在Java中按对象属性拆分ArrayList?

时间:2019-03-25 00:21:16

标签: java sorting arraylist

我正在编写一个优化运输系统的程序。 我有一个65,000名乘客的ArrayList“乘客”,每个乘客都有小时属性(1-24),以及其他属性。 我想浏览ArrayList并根据他们的小时数创建24个新的ArrayList乘客,以便我可以使用每个列表查找每小时所需的交通。

//example of what I want to do for passengers in each hour
if (passengers.get(i).getAge() == 'C') {
    if (passengers.get(i).getTransportation() == 'S')
        subwayCount += 0.75;
    else if (passengers.get(i).getTransportation() == 'G')
        goTrainCount += 0.75;
    else if (passengers.get(i).getTransportation() == 'X')
        streetCarCount += 0.75;
    else if (passengers.get(i).getTransportation() == 'C')
        busCount += 0.75;
    else 
        goBusCount += 0.75;                 

}

1 个答案:

答案 0 :(得分:0)

您可以按小时属性分组以获得这样的地图:

Map<Integer, List<Passenger>> hourToPassengersMap = passengers.stream()
        .collect(Collectors.groupingBy(Passenger::getHour));

使用方式:

List<Passenger> hour3Passengers = hourToPassengersMap.get(3);