Yeh*_*wad 3 java collections arraylist
有没有办法检查一个集合是否包含一个或更多的值,具有比使用contains循环两次更好的性能?
在其他意义上看起来像这样的东西
person.contains("Joe" || "Jasha");
Run Code Online (Sandbox Code Playgroud)
只需使用 Arrays 类
person.containsAll(Arrays.asList("Jasha","Joe"));
Run Code Online (Sandbox Code Playgroud)
包含只需要一个参数
if(person.contains("Joe") || person.contains("Jasha")){
// do something
}
Run Code Online (Sandbox Code Playgroud)
如果你担心N元素的数量
String[] items ={"Joe","jon","And So On".....};
for (String item : items ) {
if (person.contains(item)) {
//found
break;
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:
这|| 对你的情况最有帮助,因为你有好处Short-circuit_evaluation
如果第一个参数不足以确定表达式的值,则仅执行或计算第二个参数:
的实现会ArrayList.contains()循环遍历每个元素并进行测试equals(),因此调用.contains()两次效率很低。
您可以编写自己的循环,使用编译的正则表达式模式同时查找任一名称,同时检查这两个名称:
Pattern p = Pattern.compile("Joe|Jasha");
boolean found = false;
for (String s : person) {
if (p.matcher(s).find()) {
found = true;
break;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10072 次 |
| 最近记录: |