java - 如何在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;
}
解决方案
您可以按小时属性分组以获得这样的地图:
Map<Integer, List<Passenger>> hourToPassengersMap = passengers.stream()
.collect(Collectors.groupingBy(Passenger::getHour));
像这样使用它:
List<Passenger> hour3Passengers = hourToPassengersMap.get(3);
推荐阅读
- java - 我可以同时运行 @TestFactory 生成的 Junit 动态测试吗?
- sql-server - 更新主/明细表的通用触发器
- android - 如何在两个不同活动类的片段之间切换
- c++ - 使用 ::std::vector 创建数组
- function - 我有一个标量函数,它返回一个包含这个“(289/2.2)*.8”的varchar(100)。我怎样才能让函数返回 105.090909090909091 呢?
- c++ - 如何将 YAML 节点中的序列作为字符串返回?
- sqlite - 将 Apache 超集与 SQLite 连接起来
- filter - 在 dplyr (R) 中过滤命名向量
- java - 通过 JPA 获取存储在 Postgres 中的 BC 年份日期忽略了时代
- r - 函数内的代码有效,但函数本身无效