我有这段代码片段,它基本上是在 long
整数的 ArrayList 中检查 0
值。
import java.io.*;
import java.util.*;
class main
{
public static void main (String[] args) throws java.lang.Exception
{
long zero = 0;
ArrayList<Long> alist = new ArrayList();
alist.add (zero);
if (alist.contains(0))
System.out.println ("contains zero");
else
System.out.println ("contains no zero");
}
}
我得到的输出是不包含零
。相当令人不安!
这是错误还是预期的行为?
最佳答案
将此逻辑检查更改为:alist.contains(0L)
。此行为与自动装箱/拆箱有关。 int
装箱为Integer
,long
装箱为Long
。在你的列表中你放了一个 long(装箱到一个 Long
),然后你搜索一个 int(装箱到一个 Integer
)......所以你找不到它.
关于java - 使用 contains() 检查 Java ArrayList 中的零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28967225/