2012-04-30 120 views
0

在選定的聯繫人我有重複的值,重複的條目,這樣的選擇的聯繫人複製循環問題在for循環,同時避免

for(int q=0;q<selectedcontact.size();q++) 
    { 
     selectedcontactcopy.add(selectedcontact.get(q)); 
    } 

然後IAM第一回吐副本比較兩個數組列表

for(int r=0;r<selectedcontactcopy.size();r++) 
     { 
      for(int j=0;j<selectedcontact.size();j++) 
      { 
       if(r!=j && r<j) 
       { 

        if(selectedcontactcopy.get(r).getLandLineNumber().toString().trim().equals(selectedcontact.get(j).getLandLineNumber().toString().trim())) 
        { 
        Log.i("hai",selectedcontact.get(j).getLandLineNumber().toString()); 
        selectedcontact.remove(j); 
        j--; 
        } 

       } 
      } 
     } 

但情況是,避免第一次重複,然後arraylist不會比較下一個連續的值

+0

selectedcontactcopy.remove(r);如果條件解決了我的問題。但這不是正確的方法。其實我必須使用設置爲由下面的用戶說 – user1353359

回答

1

這是做一個唯一性檢查的壞方法。更好的方法是利用java.util.Set的功能 - 確保您的聯繫人實現Comparable並比較固定電話號碼,然後將它們添加到該集合並遍歷設置的內容。

設置保證您的唯一性,並提供比嵌套for循環更清潔的界面。

+0

是否有通過更改此代碼的解決方案 – user1353359

1

使用HashSet避免ArrayList重複的值,

喜歡的東西,

ArrayList arrayList = new ArrayList(); // Your ArrayList which contains repeated values 
HashSet hashSet = new HashSet(); 
hashSet.addAll(arrayList); 
arrayList.clear(); 
arrayList.addAll(hashSet); 

最簡單的方法,以消除重複的元素是將內容添加到組(不會允許重複)和然後將Set添加回ArrayList。

0

沒有必要爲此創建2個列表。 創建一個HashMap作爲整個聯繫對象的鍵爲座機號碼和值。

迭代列表'selectedContacts'並將所有元素放入散列映射中。 最後,迭代所創建的散列表並將散列映射中的所有值存儲到聯繫人列表中。

希望它有幫助。