java - 将基于案例编号的对象列表拆分为新的对象列表

标签 java object arraylist split

我有一个消息对象列表。我的消息对象由发件人和案例编号组成。 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 Stream api对列表进行分组。

Map<Integer, List<Message>> groupedMessages = allMessages.stream().collect(Collectors.groupingBy(Message::getCaseNumber));

关于java - 将基于案例编号的对象列表拆分为新的对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77310534/

相关文章:

java - 如何使用 Intent 将具有不可序列化子对象的可序列化对象从一个 Android Activity 发送到另一个 Activity

java 将对象转换为 double 组

Java 使用正则表达式

java - 如何将对象类列表添加到数组列表?

java - ArrayList 检查同一索引处两个对象值的组合

java - 避免覆盖 ArrayList 中的对象

java - 无法解析方法 setOnChildClickListener

Javamail 多线程多收信

c# - 使用 LINQ 在对象列表中分组来执行聚合

javascript - Angular 应用程序中 <object> 标签的安全错误