Reputation: 4171
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.
Upvotes: 1
Views: 51
Reputation: 45005
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)
.
Upvotes: 4
Reputation: 2330
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));
Upvotes: 1
Reputation: 91
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));
Upvotes: 1