我希望ArrayList中的contains()方法不区分大小写。
有什么办法吗?
由于
答案 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;
}