2012-04-30 15 views
0

を重複したエントリを回避しながら、私が選択した連絡先のコピー選択した連絡先に

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--; 
        } 

       } 
      } 
     } 

2つの配列リストを比較していますforループで問題をループしかし、状況は、最初の重複が回避され、arraylistは次の連続する値を比較しません。

+0

selectedcontactcopy.remove(r);状態が私の問題を解決した場合は内部。しかし、これは適切な方法ではありません。実際に私は下のユーザーが言ったようにセットを使用する必要があります – user1353359

答えて

1

これは一意性検査を行う悪い方法です。より良い方法は、java.util.Setの機能を利用することです。あなたの連絡先がComparableを実装し、固定電話番号を比較してから、それらをセットに追加して、セット内容を反復するようにします。

セットは一意性を保証し、ネストされたforループよりはるかにクリーンなインターフェイスを提供します。

+0

このコードを変更して解決策があります – user1353359

1

使用HashSetArrayListから繰り返される値を回避するために、のような、繰り返しの要素を削除する

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つのリストを作成する必要はありません。 キーを地上線番号として使用し、連絡先オブジェクト全体としての値を持つHas​​hMapを作成します。

リスト 'selectedContacts'を繰り返し、すべての要素をハッシュマップに入れます。 最後に、作成されたハッシュマップを繰り返し、ハッシュマップのすべての値を連絡先のリストに格納します。

願っています。

関連する問題