迭代多个列表

时间:2012-09-19 21:35:43

标签: java list collections

我有一个来自我创建的DTO的两个单独的列表,这两个列表包含不同的数据集,即在第一个列表中可以说有一些'userloginname'以及第二个最后更新的'status'。 在第二个列表中,我有'userloginname',其中包含所有状态记录(不仅仅是第二个上次更新状态)。

如果想从List1中获取每个'userloginname'并与list2中的每个'userloginname'进行比较,是否可以这样做?

谢谢

2 个答案:

答案 0 :(得分:1)

如果我误解了,请纠正我,但是这样的事情怎么样:

for (int i = 0 ; i < list1.size() ; i++) {
    // Do something with "list1.get(i)" and "list2.get(i)"
}

使用此功能,您可以将list1中给定索引处的项目与list2中相应索引处的项目进行比较。如果您想将每个list1成员与其他list2成员进行比较,您可以执行以下操作:

for (int i = 0 ; i < list1.size() ; i++)
    for (int j = 0 ; j < list2.size() ; j++) {
        // Do something with "list1.get(i)" and "list2.get(j)"
    }

答案 1 :(得分:0)

使用'userloginname'作为关键字将其中一个列表转换为地图。

List<LastStatusRecord> lastStatusRecords = dto.getLastStatusRecords();
List<StatusRecord> statusRecords = dto.getStatusRecords();

Map<String, FullRecord> statusRecordIndex = new HashMap<String, StatusRecord>();
for (StatusRecord statusRecord : statusRecords) {
  statusRecordIndex.put(statusRecord.getUserLoginName(), statusRecord);
}
for (LastStatusRecord lastStatusRecord : lastStatusRecords) {
  StatusRecord statusRecord = statusRecordIndex.get(lastStatusRecord.getUserLoginName());
  // place the condition here
}