3

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

有什么办法吗?

谢谢

4

3 回答 3

8

不,您必须定义自己的 contains 方法,该方法必须在 中迭代并使用类的方法ArrayList比较值。equalsIgnoreCaseString

编辑:我不想粗鲁,但问题很清楚:这家伙想使用这种contains方法。toLowerCase因此,由于太多原因,他不能/不应该在添加元素之前使用:例如,他可能需要原件String(不是小写的)。此外,当我们谈论contains方法时,我们关注的是元素而不是它们的索引(正如几分钟前有人回答的那样)。

于 2010-06-08T04:22:56.597 回答
2

正如@Cristian 所说,没有本地方法可以实现这一点。我想我会发布我写的小实用方法,以防它是一个有用的复制和粘贴:

public static boolean ContainsCaseInsensitive(ArrayList<String> searchList, String searchTerm)
{
    for (String item : searchList)
    {
        if (item.equalsIgnoreCase(searchTerm)) 
            return true;
    }
    return false;
}
于 2012-07-21T13:32:34.973 回答
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");  
于 2011-02-10T09:28:39.910 回答