0

arraylist に追加されている連絡先がありますが、一部の連絡先は他のアプリケーションで一般的であるため、重複したエントリもその中に保存されます。

この状況を解決するための 2 つのアプローチがあることを認識していますが、どちらのアプローチに従うべきかわかりません。

最初:

String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
ArrayList<String> temp = new ArrayList<String>();
                temp.add(name);

                if (!contactList.contains(name)) {
                    contactList.add(name);}

2番目:

エントリの重複を許可しないため、ハッシュセットに追加してから、arraylist に追加し直します。

     String name = getStrin(...);
        contactList.add(name);

// after the loop has completed adding all elements
    HashSet hs = new HashSet();
        hs.addAll(contactList);
        contactList.clear();
        contactList.addAll(hs);
4

2 に答える 2

2

2 番目の方法に従う必要があります。この方法の方が優れており、個別の値に合わせて最適化されています。

于 2012-10-03T10:53:52.667 に答える
1

HashSet に追加する場合でも、HashSet はエントリが存在するかどうかを確認する操作を実行し、より最適化された方法ではありますが、新しいエントリに対応するために自身を再編成する必要があります。したがって、2 番目の方法を使用することで得られる大きな利点はないと思います。さらに、方法 2 で addAll() および clear() 操作を行っているため、HashSet の使用によって得られる最適化は、これらによって相殺される可能性があります。

最初の方法自体を使用することをお勧めしますが、両方の方法をテストし、特定のテスト ケースとアプリケーション要件に適した方を測定する必要があります。

于 2012-10-03T10:58:55.787 に答える