如果 item 在 Java 数组中,该怎么办?

3
我是一名学习Java的Python程序员。
我遇到了下面这个问题(或者说是复杂情况):
在Python中,我可以很容易地在if语句中检查一个列表中是否有一个项目,像这样:
```python if item in my_list: do_something() ```
但是在Java中,似乎没有类似的简单方法。
x = 1
if x in [0,1,2,3,4,5]:
    #do something

在Java中最简单的方法是什么?

  • 我能否像上面的示例那样不使用列表变量来完成它?

例如:

{0,1}.contains(1)

(不确定这是否是重复的,我已查看过了,如果是请确保标记为=)

我相信我尝试过了,但是 {0,1}.contains(1) 没有生效;我要追求简单。 - Ironkey
2
@JohnGordon Java 基本数据类型的数组没有 contains 方法。 - cdalxndr
1
我知道在Java中不能使用if (answer == "1" | answer == "yes" | ...)这种方式来比较字符串。 - Scary Wombat
2
@Ironkey数组是Java中的一种非常底层结构,除非您确实知道需要这样做,否则不应使用它们。想象一下Python具有对glibc freemalloc的低级访问权限,以便您可以分配和释放大块连续内存。您可以使用它们来编写基本的整数列表,但即使是简单的“contains”也非常困难,并且在最小程度上也不面向对象。Java的数组就像那样。Java中与Python数组等效的是java.util.ArrayList,而不是数组。 - rzwitserloot
1
@rzwitserloot 一个 Python 的 list :) - juanpa.arrivillaga
显示剩余7条评论
3个回答

4

试试这个:

if (Arrays.asList(array).contains("---something---"))

3
@Ironkey,这样做行不通,因为您无法拥有一个基本类型的列表,所以实际上它会创建一个int []对象的列表,大小为1。 您可以使用Integer[] nums = {0, 1, 123},但在现代Java中,您只需直接创建列表,即List<Integer> nums = List.of(0, 1, 123); 基本上,在Java中不要期望能够像Python中那样做很多事情,Java要冗长得多。此外,您几乎总是希望使用某种类型的List而不是原始数组。 - juanpa.arrivillaga
1
@juanpa.arrivillaga 没错。 - Higs
1
@Ironkey 不,List 不是原始类型。但是它正在创建一个 List<List<Integer>>,因为 Arrays.asList 要么接受一个 数组,要么接受可变数量的参数,例如 List<Integer> list = Arrays.asList(1,2,3); - juanpa.arrivillaga
@juanpa.arrivillaga 那么,对此的修复措施是什么? - Ironkey
1
@juanpa.arrivillaga 哦哦,好的抱歉,我明白了哈哈;非常感谢,现在我对此有更深刻的理解! - Ironkey
显示剩余3条评论

3

还有一种方法可能会对您有所帮助。

如果数组元素是连续的序列,请使用以下方法:

int x = 1;
if (IntStream.range(0, 6).anyMatch(value -> value == x)) {
    // do something like print message
    System.out.println("find x");
}

如果数组元素是非连续序列:

int x = 1;
int[] inputs = new int[] {0, 1, 2, 3, 4, 5, 8, 9, 10};
if (Arrays.stream(inputs).anyMatch(value -> value == x)) {
    // do something like print message
    System.out.println("find x");
}

1

这里我使用数组,这意味着一旦你创建了一个数组,你就不能改变它的大小。然后我用一个for循环解析数组,并检查我的值x是否等于迭代imyArrays中的值。

public static void main(String[] args) {
        int x = 2;
        int [] myArray = {1,2,3,4,5};
        for (int i = 0; i < myArray.length; i++) {
            if(x == myArray[i])
            {
                //do something
            }
        }   
    }
}

1
我知道如何实现,只是想知道是否有一种直接引用数组的方法(就像在Python中)。 - Ironkey
@Ironkey 在Java中,我们不能像Python那样直接引用数组。 - TongChen

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