tra*_*ama 40 java list arraylist
有没有选择忽略.contains()
方法的情况?
我有一个ArrayList
DVD对象.每个DVD对象都有一些元素,其中一个是标题.我有一个搜索特定标题的方法.它有效,但我希望它不区分大小写.
小智 68
如果您使用的是Java 8
List<String> list = new ArrayList<>();
boolean containsSearchStr = list.stream().anyMatch("search_value"::equalsIgnoreCase);
Run Code Online (Sandbox Code Playgroud)
小智 27
我猜你的意思是在搜索字符串时忽略大小写?
我不知道,但您可以尝试将字符串转换为搜索到较低或大写,然后搜索.
// s is the String to search into, and seq the sequence you are searching for.
bool doesContain = s.toLowerCase().contains(seq);
Run Code Online (Sandbox Code Playgroud)
编辑:正如Ryan Schipper建议的那样,你也可以(也可能会更好)做seq.toLowerCase(),具体取决于你的情况.
小智 12
private boolean containsIgnoreCase(List<String> list, String soughtFor) {
for (String current : list) {
if (current.equalsIgnoreCase(soughtFor)) {
return true;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
您可以使用 Stream() 替换 equalsIgnoreCase 的 contains() ,如下所示
List<String> names = List.of("One","tWo", "ThrEe", "foUR", "five", "Six", "THREE");
boolean contains = names.stream().anyMatch(i -> i.equalsIgnoreCase("three"))
Run Code Online (Sandbox Code Playgroud)
小智 6
在 Java 8 中,您可以使用 Stream 接口:
return dvdList.stream().anyMatch(d -> d.getTitle().equalsIgnoreCase("SomeTitle"));
Run Code Online (Sandbox Code Playgroud)
我知道我来晚了一点,但在 Kotlin 中你可以轻松使用:
fun Collection<String>.containsIgnoreCase(item: String) = any {
it.equals(item, ignoreCase = true)
}
val list = listOf("Banana")
println(list.contains("banana"))
println(list.containsIgnoreCase("BaNaNa"))
Run Code Online (Sandbox Code Playgroud)