ArrayList& contains() - 不区分大小写

时间:2010-06-08 04:16:53

标签: android arraylist contacts case-insensitive

我希望ArrayList中的contains()方法不区分大小写。

有什么办法吗?

由于

3 个答案:

答案 0 :(得分:7)

没有。您必须定义自己的contains方法,该方法必须在ArrayList之间进行迭代,并使用equalsIgnoreCase类的String方法比较值。

编辑:我不想粗鲁,但问题非常明确:这家伙想要使用contains方法。因此,在添加元素之前,他不能/应该使用toLowerCase因为太多原因:例如,他可能需要原始的String(而不是小写的那个)。另外,在我们讨论contains方法时,我们关注的是元素而不是它们的索引(就像几分钟前有人回答的那样)。

答案 1 :(得分:1)

我遇到了这样的问题,我使用了BinarySearch这个似乎有用的解决方法:

ArrayList al= new ArrayList();
al.Add("Elem1");
al.Add("Elem5");
al.Add("Elem3");
al.Sort();  

if (al.BinarySearch("elem3", new CaseInsensitiveComparer()) > 0)
      MessageBox.Show("Exists");   //this case
else
      MessageBox.Show("Not found");  

答案 2 :(得分:1)

正如@Cristian所说,没有本地方法来实现这一目标。我以为我会发布我编写的小实用工具方法,以防它是一个有用的复制粘贴:

public static boolean ContainsCaseInsensitive(ArrayList<String> searchList, String searchTerm)
{
    for (String item : searchList)
    {
        if (item.equalsIgnoreCase(searchTerm)) 
            return true;
    }
    return false;
}