0

我有正在添加到数组列表中的联系人,现在一些联系人在其他应用程序中很常见,因此重复的条目也保存在其中。

我知道解决这种情况的两种方法,我不确定我应该遵循哪种方法?

第一的:

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

第二:

将其添加到 hashset,因为它不允许重复条目,然后将其添加回 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

您应该遵循第二种方式,因为它更好,并且针对不同的值进行了优化。

于 2012-10-03T10:53:52.667 回答
1

即使您将其添加到 HashSet 中,HashSet 也会执行操作以检查条目是否存在,并且必须重新组织自身以适应新条目,尽管是以更优化的方式。因此,我认为采用第二种方法不会获得任何重大优势。另外,您正在方法 2 中执行 addAll() 和 clear() 操作,因此使用 HashSet 获得的任何优化都可能被这些抵消。

我建议您使用第一种方法本身,但是您应该测试这两种方法并测量哪种方法更适合您的特定测试用例和应用程序要求。

于 2012-10-03T10:58:55.787 回答