我有正在添加到arraylist的联系人,现在某些联系人在其他应用程序中很常见,因此重复的条目也会保存在其中。
我知道有两种方法可以解决这种情况,我不确定应该采用哪种方法?
首先:
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);
答案 0 :(得分:2)
您应该遵循第二种方式,因为它更好,并针对不同的值进行了优化。
答案 1 :(得分:1)
当您将其添加到HashSet时,HashSet将执行操作以检查条目是否存在,并且必须重新组织自身以适应新条目,尽管以更优化的方式。因此,我不认为通过第二种方法可以获得任何主要优势。另外,您正在方法2中执行addAll()和clear()操作,因此HashSet使用所获得的任何优化都可能会被这些优化。
我建议您先选择第一种方法,但是您应该测试这两种方法,并测量哪种方法更适合您的特定测试用例和应用程序要求。