I have this code snippet that is basically checking for a 0
value in a ArrayList of long
integers.
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");
}
}
and the output I get is contains no zero
. Rather unnerving!
Is this a bug or the expected behavior?
Change this logical check to: alist.contains(0L)
. This behavior is related to auto boxing/unboxing. int
is boxed to Integer
, and long
is boxed to Long
. In your list you put a long (boxed to a Long
), then you search for an int (boxed to an Integer
)... so you don't find it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With