[英]why is my method returning wrong results
我有一个测试:
public void testGetUniqueResults(){
APRecord p1 = new APRecord();
p1.settId("l1");
APRecord p2 = new APRecord();
p2.setId("l2");
APRecord p3 = new APRecord();
p3.setId("l1");
APRecord p4 = new APRecord();
p4.setId("l4");
List< APRecord > listPatch = new ArrayList< APRecord >();
listPatch.add(p1);
listPatch.add(p2);
listPatch.add(p3);
listPatch.add(p4);
List<ARecord> recs = new ArrayList<ARecord>();
recs.addAll(listPatch);
unique(recs);
System.out.println("records" + recs); //return all the 4 results whereas it should return 3
}
和方法:
public List<ARecord> unique(List<Record> list) {
System.out.println(list);
HashMap<String, ARecord > uniqueRecs = new HashMap<String, ARecord >();
for(ARecord records:list){
if(!uniqueRecs.containsKey(records.getId())){
uniqueRecs.put(records.getId(), records);
}
}
List< ARecord > finalRecs = new ArrayList< ARecord>(uniqueRecs.values());
for(ARecord record:finalRecs){
System.out.println("records final in method "+record);
}
return finalRecs; //returns correct result
}
我在方法unique中的finalRecs返回预期的结果,但是当我将recs传递到我的唯一列表时,它返回我的所有结果,而我期望得到三个结果,即使我的方法唯一返回3个结果,我也会得到全部四个结果。 我在哪里做错了? 任何帮助表示赞赏。
您看到4个结果的原因是,您从未使用过方法unique()
的返回值。 而且您也不会对传入的输入List
进行操作,因此当前方法工作量为零。 这是您的代码当前所在的位置:
List<ARecord> recs = new ArrayList<ARecord>();
recs.addAll(listPatch);
unique(recs); // you never use the return value!
将此代码替换为以下代码,一切都应该很好:
List<ARecord> recs = new ArrayList<ARecord>();
recs.addAll(listPatch);
recs = unique(recs); // you should be fine now
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.