如何检查ArrayList是否包含2个值?

Yeh*_*wad 3 java collections arraylist

有没有办法检查一个集合是否包含一个或更多的值,具有比使用contains循环两次更好的性能?

在其他意义上看起来像这样的东西

person.contains("Joe" || "Jasha");
Run Code Online (Sandbox Code Playgroud)

Cha*_*G K 7

只需使用 Arrays 类

person.containsAll(Arrays.asList("Jasha","Joe"));
Run Code Online (Sandbox Code Playgroud)

  • 仅当您需要 asList() 中列出的所有值亲自出现时,这才有用。问题是要求至少存在一个值。 (3认同)

Sur*_*tta 6

包含只需要一个参数

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

如果第一个参数不足以确定表达式的值,则仅执行或计算第二个参数:

  • 为了快速+1我也发布了相同的 (2认同)

Boh*_*ian 5

的实现会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)