2012-09-19 168 views
0

我有一個創建的DTO有兩個獨立列表,這兩個列表包含不同的數據集,即第一個列表中可以說有一些「userloginname」以及第二個最後更新的「狀態」。 在第二個列表中我有'userloginname'與所有狀態記錄(不只是第二個最後更新的狀態)。通過多個列表進行迭代

如果想要從List1中獲取每個'userloginname',並在某種條件下與list2中的每個'userloginname'進行比較,這是可能的。

謝謝

回答

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)" 
    } 
+0

這應該做,但是2列表將需要有相同的長度。 – Thousand

+0

但該列表中存儲了兩個值,即登錄名和狀態,那麼list1.get(i)會返回什麼? – anandkk

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 
}