我希望 ArrayList 中的 contains() 方法不区分大小写。
有什么办法吗?
谢谢
不,您必须定义自己的 contains 方法,该方法必须在 中迭代并使用类的方法ArrayList
比较值。equalsIgnoreCase
String
编辑:我不想粗鲁,但问题很清楚:这家伙想使用这种contains
方法。toLowerCase
因此,由于太多原因,他不能/不应该在添加元素之前使用:例如,他可能需要原件String
(不是小写的)。此外,当我们谈论contains
方法时,我们关注的是元素而不是它们的索引(正如几分钟前有人回答的那样)。
正如@Cristian 所说,没有本地方法可以实现这一点。我想我会发布我写的小实用方法,以防它是一个有用的复制和粘贴:
public static boolean ContainsCaseInsensitive(ArrayList<String> searchList, String searchTerm)
{
for (String item : searchList)
{
if (item.equalsIgnoreCase(searchTerm))
return true;
}
return false;
}
我遇到了这样的问题,我在 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");