gpt4 book ai didi

java - 如何检查 List 是否包含特定字符串?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:41:20 27 4
gpt4 key购买 nike

这是我正在尝试做的事情:我有一些List<String> ,如果列表包含特定字符串,我想打印一条语句,否则抛出异常但是当我尝试以下代码时

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 处迭代它显然找到了“苹果”并立即转到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)和使用更新的 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 一样紧凑,但允许提供更复杂的 Predicate如果您想要基于 equals() 方法以外的方法进行比较。

关于java - 如何检查 List<String> 是否包含特定字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37330551/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com