与映射进行比较时获取重复值
Getting duplicate values while comparing with the map
最初,我将在页面中选择一个学生姓名列表并提交以获取地址详细信息。StudentNames将存储在studentDetailMapList中。在循环浏览列表时,我会将学生姓名与AddressDetailsMap进行比较,以检索addressDetails。但当有同名学生时,第一次迭代会返回确切的地址,但当第二次迭代时,它会再次返回第一个学生地址,而不是第二个学生地址。它正在获取重复值
for (i=studentDetailMapList.values().iterator;i.hasNext();)
{
detailMap = (Map)i.Next();
sDetails = (StudentDetails)detailMap.get("Student");
student = sDetails.getRollNo();
StudentAddressDetails studentAddressDetails = getDetailswithAddress(AddressDetailsMap,sDetails);
}
private StudentAddressDetails getDetailswithAddress(Map AddressDetailsMap,sDetails student)
{
StudentAddressDetails addDetails = null;
try{
for(Iterator itr = AddressDetailsMap.values().iterator();itr.hasNext();){
addDetails = (StudentAddressDetails )itr.next();
if( (addDetails != null) && (addDetails.getStudentID().equals(student.getId()))){
return addDetails;
}
}
}catch(Throwable t){
return null;
}
return null;
}
在与地图进行比较时,有没有办法避免重复?非常感谢。
您遇到的问题是您使用了错误的地图数据结构。
贴图是将关键点映射到值的对象。映射不能包含重复的键;每个键最多可以映射到一个值。
同一个名字不能有多个地址,你应该为地图使用其他属性,也许是学生ID,甚至列表的索引在这种情况下也应该有效。
你必须在学生的班级中添加一个UUID,并使用它来管理他们的数据
编辑响应
Java的UUID为您提供了基本的Java UUID。
您可以管理自己的序列-这种方式可能有助于在数据库中用UNIQUE_ID索引学生。
管理ID的最佳方法是:使用HashMap<Integer,Student>
。
AddressDetailsMap
映射的每个键都必须是标识符(studentId),而不是学生名称。
编辑:在这种情况下,您的方法应该是这样的:
private StudentAddressDetails getDetailswithAddress(Map AddressDetailsMap,sDetails student) {
return AddressDetailsMap.get(student.getStudentID());
}
相关文章:
- 从键值结构中获取数据,并将其与AngularJS中ng重复的值进行比较
- 数组比较并获取计数
- 获取第一个字符串并在 Ajax 中进行比较
- 在获取后将新模型准备到集合中(不带比较器)
- 如何使用javascript获取和比较图像的边框样式
- 与映射进行比较时获取重复值
- 从文本区域获取行并进行比较
- 仅比较使用 JavaScript 从文本框中获取的时间 vlaue
- 获取当前时间并与数组进行比较
- 如何通过在此 JSON 结果中进行比较来获取值
- 比较两个数组并获取仅包含在一个数组中的元素
- 将从 API 获取的日期与今天的日期进行比较
- 使用jQuery获取明天的日期并进行比较
- 使用 Facebook API 获取和比较两个个人资料之间的常见喜欢
- 从选择中获取值并与数据库进行比较以获得价格
- Xpages:从ViewColumn获取所有值并比较这些值
- 获取Common和Uniques元素比较Javascript中的两个或多个数组
- 通过Javascript获取表格单元格的坐标,并与不同的表格进行比较
- 获取一个元素's的ID,并将其与字符串或另一个ID进行比较
- 我正试图从错误消息中获取文本并与预期进行比较,但它返回“0”;空”;由于don'没有正确的css路径或html