首页 > 解决方案 > 如何在java中按对象属性拆分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;                 

}

标签: javasortingarraylist

解决方案


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

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

像这样使用它:

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

推荐阅读