当前位置: 首页 > 知识库问答 >
问题:

如何检查列表是否包含特定字符串?

司空俊雅
2023-03-14

下面是我要做的:我有一些List ,如果列表包含特定字符串,我想打印一条语句,否则抛出一个异常,但当我尝试以下代码时

List<String> fruit = new ArrayList<>();
fruit.add("apple");
fruit.add("orange");
fruit.add("banana");

for(int i = 0; i < fruit.size(); i++){
   if(fruit.get(i).contains("banana"){
     System.out.println("Found");
   } else {
     throw new SkipException("could not be found");
   }
}

它遍历列表,在i=0处,它显然找到“apple”,并立即转到else块并抛出异常。我也试过下面的,但这也不起作用。

for(int i = 0; i < fruit.size(); i++){
   if(Arrays.asList(fruit).contains("banana"){
      System.out.println("found");
   }else{
      throw new SkipException("not found");
   }
}

有没有一个简单的方法来做我想做的事情?

共有1个答案

吕英豪
2023-03-14

有几种方法。

选择哪一个取决于您,在冗长、被限制为简单的equals检查(如果您想要进行更复杂的匹配,您不能轻易地进行选项1)和使用您可能还不支持或不熟悉的较新的API之间需要权衡。

选项1:Collection.Contains()方法:

List<String> fruits = new ArrayList<>();
fruits.add("apple");
fruits.add("orange");
fruits.add("banana");

if (fruits.contains("banana") {
    System.out.println("Found");
} else {
    throw new SkipException("could not be found");
}

选项2:使用具有外部状态的for循环

List<String> fruits = new ArrayList<>();
fruits.add("apple");
fruits.add("orange");
fruits.add("banana");

boolean found = false;
for (String s : fruits) {
    if (s.equals("banana")) {
        found = true;
        break; // Break out of the loop to skip the remaining items
    }
}
if (found) {
    System.out.println("Found");
} else {
    throw new SkipException("could not be found");
}

选项3:如果您使用的是Java 8,那么整洁的stream.anyMatch()方法:

List<String> fruits = new ArrayList<>();
fruits.add("apple");
fruits.add("orange");
fruits.add("banana");

if (fruits.stream().anyMatch(s -> s.equals("banana"))) {
    System.out.println("Found");
} else {
    throw new SkipException("could not be found");
}

选项3是我个人最喜欢的,因为它几乎和选项1一样紧凑,但是如果您想要基于equals()方法以外的东西进行比较,它允许提供一个更复杂的谓词。

 类似资料:
  • 问题内容: 如何检查字符串中是否包含字符列表,例如“ ABCDEFGH”,如何检查字符串中是否有字符列表。 问题答案: 在Java中使用正则表达式检查在Java中使用 正则表达式 例如:

  • 问题内容: 这个问题的答案是 社区的努力。编辑现有答案以改善此职位。它目前不接受新的答案或互动。 考虑: 假设我有上面的代码,编写该语句的正确方法是什么? 问题答案: 您可以使用该函数来查找另一个字符串中另一个字符串的出现: 注意,of的使用是故意的(既不会也不返回期望的结果);返回大海捞针字符串中针线串起始处的偏移量,或者返回boolean值(如果找不到针)。由于0是有效的偏移量,而0是“假”,

  • 问题内容: 那么,如何检查字符串中是否包含特定单词? 这是我的代码: 我遇到了错误。 问题答案: 并不像他们所说的那么复杂,选中此选项您不会后悔。 您可以根据需要更改。

  • 我们如何在字符串列表中找到字母或特殊字符?我有一张单子,想看看里面有没有特别的字母。我试着去做,但出了一个错误。 代码: 获取错误: 我们不应该使用吗?或者,如果一个字符串有特殊的字母或特殊的字符,我们应该找到什么?

  • 如何检查数组列表中的ID数组是否包含特定字符串?我确信这个问题可能在其他地方得到了回答,但我没有找到任何东西(可能是因为我没有搜索正确的问题)。 主要活动: 我尝试使用.contains方法,但不幸的是,它没有起作用:

  • 问题内容: 我想检查我的字符串是否包含+字符。我尝试了以下代码 但是它没有给出预期的结果。 问题答案: 您需要此: 类的方法不使用正则表达式作为参数,而是使用普通文本。 编辑: 输出: