作业票list使用stream更据作业票id和是否班组长进行分类
时间: 2024-05-25 16:19:04 浏览: 90
一个用于分班的数据库
假设作业票类为JobTicket,其中包含属性id和isLeader,作业票列表为List<JobTicket> tickets。
分类后可以使用Collectors.groupingBy和Collectors.partitioningBy方法实现:
1. 按照作业票id分类:
Map<Integer, List<JobTicket>> ticketMap = tickets.stream()
.collect(Collectors.groupingBy(JobTicket::getId));
2. 按照是否班组长分类:
Map<Boolean, List<JobTicket>> leaderMap = tickets.stream()
.collect(Collectors.partitioningBy(JobTicket::isLeader));
如果需要同时按照作业票id和是否班组长分类,可以将以上两个步骤进行组合:
Map<Integer, Map<Boolean, List<JobTicket>>> ticketLeaderMap = tickets.stream()
.collect(Collectors.groupingBy(JobTicket::getId, Collectors.partitioningBy(JobTicket::isLeader)));
以上代码将作业票列表按照作业票id分类,并按照是否班组长进行分组,得到一个Map<Integer, Map<Boolean, List<JobTicket>>>对象。该对象的key为作业票id,value为一个Map<Boolean, List<JobTicket>>对象,该对象的key为是否班组长,value为一个作业票列表。
阅读全文