判断x是否在Java中的数组中

If x in array in Java

本问题已经有最佳答案,请猛点这里访问。

在Python中,可以使用非常简单的if语句来查看用户输入的内容(或仅变量)是否在列表中:

1
2
3
4
5
myList = ["x","y","z"]
myVar ="x"

if myVar in x:
    print("your variable is in the list.")

我怎样才能在Java中做到这一点呢?


如果数组类型是引用类型,则可以使用Arrays.asList(T...)将其转换为List,并检查它是否包含元素

1
2
if (Arrays.asList(array).contains("whatever"))
    // do your thing

与其调用array类,不如自己迭代数组

1
2
3
4
5
6
7
8
9
String[] array = {"x","y","z"};
String myVar ="x";
for(String letter : array)
{
    if(letter.equals(myVar)
    {
         System.out.println(myVar +" is in the list");
    }
}

记住,字符串只不过是Java中的字符数组。那就是

1
String word ="dog";

实际存储为

1
char[] word = {"d","o","g"};

因此,如果您调用if(letter==myvar),它将永远不会返回true,因为它只是查看JVM中的引用ID。这就是我在上面的代码中使用的原因

1
if(letter.equals(myVar)) { }


这里有一个解决方案,

2

输出是

1
your variable is in the list.

1
2
3
4
5
String[] array = {"x","y","z"};

if (Arrays.asList(array).contains("x")) {
    System.out.println("Contains!");
}

您可以遍历数组和搜索,但我建议使用Set集合。

1
2
3
4
5
6
7
8
9
Set<String> mySet = new HashSet<String>();
mySet.add("x");
mySet.add("y");
mySet.add("z");
String myVar ="x";

if (mySet.contains(myVar)) {
  System.out.println("your variable is in the list");
}

Set.contains()O(1)中进行评估,在最坏的情况下,遍历array进行搜索可以取O(N)