在Java中,如何确定一个数组是否包含特定的值?

2701

我有一个包含以下值的String[]

public static final String[] VALUES = new String[] {"AB","BC","CD","AE"};

给定字符串 s,是否有一种好的方法来测试 VALUES 是否包含 s


6
可以使用 for 循环来解决,代码如下:"for (String s : VALUES) if (s.equals("MYVALUE")) return true;"。 - Zack
3
@camickr--我遇到了一个几乎相同的情况,链接是这个:https://dev59.com/A3VC5IYBdhLWcg3wpi98#223929。它一直得到投票,但只是从sun的文档中复制粘贴而来。我猜分数是基于你提供了多少帮助,而不是你付出了多少努力——大多数情况下是你多快发布答案!也许我们已经偶然发现了John Skeet的秘密!好的回答,+1给你。 - Bill K
3
如果你正在使用Apache Commons,那么org.apache.commons.lang.ArrayUtils.contains()可以为你完成这个任务。 - Mr. Boy
50
因为像我这样的人会在谷歌上搜索问题,点击 SO 的结果,看到你的答案,测试它,发现它有效,就会点赞该答案然后离开。 - Aequitas
2
我真的很想在java.util.Arrays中找到一个简单的indexOfcontains,它们都包含直接的循环。是的,你可以在1分钟内编写它们;但我仍然去了StackOverflow,期望在JDK的某个地方找到它们。 - tucuxi
显示剩余2条评论
32个回答

0
你可以使用Java Streams来判断一个数组是否包含特定的值。以下是一个示例:
import java.util.Arrays;

public class ArrayContainsValueExample {
    public static void main(String[] args) {
        String[] fruits = {"apple", "banana", "orange", "kiwi", "grape"};

        boolean containsOrange = Arrays.stream(fruits)
                .anyMatch("orange"::equals);

        if (containsOrange) {
            System.out.println("The array contains 'orange'");
        } else {
            System.out.println("The array does not contain 'orange'");
        }
    }
}

在上面的例子中,我们有一个名为fruits的String类型数组。我们使用Arrays.stream()方法创建一个数组元素的流。然后我们调用anyMatch()方法来检查流中是否有任何元素与值"orange"匹配。如果有任何元素与该值匹配,anyMatch()方法将返回true,表示数组包含该值。如果没有任何元素与该值匹配,anyMatch()方法将返回false,表示数组不包含该值。
请注意,anyMatch()方法是短路操作,也就是说一旦找到匹配项,它就会停止处理流。这使得它对于大型数组非常高效,因为它不需要处理所有的元素。

-2
你可以通过两种方法来检查它:
A)将数组转换为字符串,然后使用.contains方法检查所需的字符串。
String a = Arrays.toString(VALUES);
System.out.println(a.contains("AB"));
System.out.println(a.contains("BC"));
System.out.println(a.contains("CD"));
System.out.println(a.contains("AE"));

B) 这是一种更有效的方法

Scanner s = new Scanner(System.in);

String u = s.next();
boolean d = true;
for (int i = 0; i < VAL.length; i++) {
    if (VAL[i].equals(u) == d)
        System.out.println(VAL[i] + " " + u + VAL[i].equals(u));
}

3
字符串转换效率极低,解决方案不正确,例如包含(“,”)将返回true。 - Atuos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接