将基于 caseNumber 的对象列表拆分为新的对象列表

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

我有一个消息对象列表。我的消息对象由发件人和案例编号组成。 SQL 查询将所有消息拉入列表中。在此列表中,我有多个相同的 CaseNumber。
我想要完成的是循环当前的消息列表,并根据 CaseNumber 将它们分成自己的单独列表。

我已经摆弄过,但我不确定如何在 for 循环中完成此操作。

    public class Messages {
    private String sender = "";
    private int caseNumber = 0

     public int getCaseNumber() {
    return caseNumber;
}
    public void setCaseNumber(int caseNumber) {
        this.caseNumber = caseNumber;
    }

    public String getSender() {
      return sender;
    }
    public void setSender(String sender) {
    this.sender = sender;
    }
    
   }

SQL makes a call and maps the vars into a huge object.
  public List<Messages> getAllMessages()
  {
   List<Messages> entries = null;
   String sql = "select sender, caseNumber from Messages";
   entries = jdbcTemplate.query(sql, new MessagesMapper());
   return entries;
  }

//for loop in my function.
for(Messages m : allMessages)
{
    //This is the part i am stumped on how to I check if case number = case number if so create a new Messages List. Then if any of the additional cases in the list, add them to this new List.  If it's a new caseNumber, create a new list.
}

我想过更改 sql 调用只是为了按 caseNumber 提取每条消息,但我觉得我可能只是在敲击 SQL,这感觉效率不高。

希望这对我想要实现的目标有意义。根据 caseNumber 拆分对象列表并创建该对象自己的列表。

java object arraylist split
1个回答
0
投票

您可以使用java流

api
对列表进行分组。

Map<Integer, List<Message>> groupedMessages = allMessages.stream().collect(Collectors.groupingBy(Message::getCaseNumber));
© www.soinside.com 2019 - 2024. All rights reserved.