我可以通过某种方式告诉array.contains()方法不区分大小写进行查找吗?
List<String> data = Arrays.asList(
"one", Two", "tHRee"); //lots of entries (100+)
data.contains("three");
contains
只是检查列表中是否存在一个对象。因此,在这里无法进行大小写不敏感的查找,因为"three"和"Three"是不同的对象。
解决这个问题的简单方法是:
public boolean containsCaseInsensitive(String s, List<String> l){
for (String string : l){
if (string.equalsIgnoreCase(s)){
return true;
}
}
return false;
}
然后
containsCaseInsensitive("three", data);
Java 8+ 版本:
public boolean containsCaseInsensitive(String s, List<String> l){
return l.stream().anyMatch(x -> x.equalsIgnoreCase(s));
}
这将需要您编写自己的contains()
方法。
自定义contains()
的指针:
为了使比较不区分大小写,请确保在参数和当前元素上应用toLowerCase或toUpperCase中的任何一个。
List list; public boolean contains(String str){
for(int i=0;i<list.size();i++){
if(list.elementAt(i).toLowerCase().Equals(str.toLowerCase())) return true;
}
return false;
}
str
转换为小写 N 次(每个 list
的元素转换一次),并且每次调用此方法时都会将 list
中的每个项转换为小写。如果你要费心编写自己的方法,请使用 equalsIgnoreCase
并跳过所有分配。 - John Hart
List.contains()
。 - m0skit0