簡體   English   中英

為什么我的方法返回錯誤的結果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM