0

選択した連絡先で値が重複しているため、最初に選択した連絡先のコピーのコピーを取得しています

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

そして、2つの配列リストを比較する

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

                }
            }
        }

しかし、状況は、最初の重複が回避され、その後、配列リストが次の連続する値を比較しないということです

4

3 に答える 3

1

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

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

于 2012-04-30T11:00:23.843 に答える
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 に追加し (重複は許可されません)、その Set を ArrayList に追加し直すことです。

于 2012-04-30T11:02:24.040 に答える
0

このために 2 つのリストを作成する必要はありません。固定電話番号としてのキーと連絡先オブジェクト全体としての値を持つ HashMap を作成します。

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

それが役に立てば幸い。

于 2012-04-30T11:18:50.137 に答える