【发布时间】:2013-12-06 05:56:45
【问题描述】:
我目前正在从返回 NprDto 具有重复 accountId 的结果的查询中检索对象列表 List<NprDto>(NprDto 类包含 accountId、theDate1 和 theDate2)。我需要一个只有唯一帐户 ID 的 List<NproDto>,但要保留该对象。它只需要添加它遇到的第一个 accountId 并忽略其余部分。
我目前正在尝试这个:
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 所需的大量工作),而且您的代码看起来也不错。我打赌你的问题出在其他地方。
-
我的输出语句位置错误。一切正常。谢谢!