In Java, I'm trying to know whether an Integer
is in an ArrayList<Integer>
. I tried using this general solution , which warns that it doesn't work with arrays of primitives . That shouldn't be a problem, since Integer
s aren't primitives ( int
s are).
ArrayList<Integer> ary = new ArrayList<Integer>();
ary.add(2);
System.out.println(String.format("%s", Arrays.asList(ary).contains(2)));
Returns false
. Any reason why? Any help is appreciated, although the less verbose the better.
Any reason why it returns
false
?
Simply because Arrays.asList(ary)
will return a List<ArrayList<Integer>>
and you try to find if it contains an Integer
which cannot work.
As remainder here is the Javadoc of Arrays.asList(ary)
public static <T> List<T> asList(T... a)
Returns a fixed-size list backed by the specified array.
Here as you provide as argument an ArrayList<Integer>
, it will return a List
of what you provided so a List<ArrayList<Integer>>
.
You need to call List#contains(Object) on your list something like ary.contains(myInteger)
.
You don't need asList()
as ArrayList itself a list. Also you don't need String.format()
to print the result. Just do in this way. This returns true
:
System.out.println(ary.contains(2));
The problem is that you're trying to coerce your ArrayList to a List when it already is. Arrays.asList takes an array or variable number of arguments and adds all of these to a list. All you need to do is call System.out.println(ary.contains(2));
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.