使用 contains() 检查 Java ArrayList 中的零
Checking for zero in Java ArrayList using contains()
我有这个代码片段,它基本上是在 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");
}
}
我得到的输出是contains no zero
。相反 令人不安!
这是错误还是预期的行为?
将此逻辑检查更改为:alist.contains(0L)
。此行为与自动 boxing/unboxing 有关。 int
装箱到 Integer
,long
装箱到 Long
。在你的列表中你放了一个 long(装箱到 Long
),然后你搜索一个 int(装箱到 Integer
)......所以你找不到它。
peter.petrov 解释了导致错误输出的原因,我只想补充一点,尽量避免硬编码,直到您需要它为止。如果你把它编码为
if (alist.contains(zero))
你可以得到想要的结果。
我有这个代码片段,它基本上是在 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");
}
}
我得到的输出是contains no zero
。相反 令人不安!
这是错误还是预期的行为?
将此逻辑检查更改为:alist.contains(0L)
。此行为与自动 boxing/unboxing 有关。 int
装箱到 Integer
,long
装箱到 Long
。在你的列表中你放了一个 long(装箱到 Long
),然后你搜索一个 int(装箱到 Integer
)......所以你找不到它。
peter.petrov 解释了导致错误输出的原因,我只想补充一点,尽量避免硬编码,直到您需要它为止。如果你把它编码为
if (alist.contains(zero))
你可以得到想要的结果。