我目前正在從查詢中檢索對象列表List<NprDto>
(NprDto類包含accountId,theDate1和theDate2),該查詢返回NprDto具有重複accountIds的結果。我需要有一個唯一的accountId List<NproDto>
但保留該對象。它只需要添加遇到的第一個accountId並忽略其餘部分。Java如何在對象列表中保留唯一值
目前,我正在嘗試此:
private List<NprDto> getUniqueAccountList(List<NprDto> nonUniqueAccountList) throws Exception {
Map<Long,NprDto> uniqueAccountsMapList = new HashMap<Long,NprDto>();
List<NprDto> uniqueAccountsList = null;
if(nonUniqueAccountList != null && !nonUniqueAccountList.isEmpty()) {
for(NprDto nprDto : nonUniqueAccountList) {
uniqueAccountsMapList.put(Long.valueOf(nprDto.getAccountId()), nprDto);
}
}
uniqueAccountsList = new ArrayList<NprDto>(uniqueAccountsMapList.values());
return uniqueAccountsList;
}
但這似乎並不奏效,因爲當我通過返回uniqueAccountsList迭代後,它只能拿起第一個對象。
任何幫助將不勝感激。
你確定你有唯一的帳號嗎?我認爲你的設計很好(節省了你做Set所需的大量工作),而且你的代碼看起來也不錯。我敢打賭你的問題在別的地方。 – RalphChapin
我有一個輸出語句在錯誤的位置。一切工作正常。謝謝! – Richard