我有一个消息对象列表。我的消息对象由发件人和案例编号组成。 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流
api
对列表进行分组。
Map<Integer, List<Message>> groupedMessages = allMessages.stream().collect(Collectors.groupingBy(Message::getCaseNumber));