JoseHdez_2
JoseHdez_2

Reputation: 4171

Is value in ArrayList<Integer>? (Java)

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 Integers aren't primitives (ints 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

Answers (3)

Nicolas Filotto
Nicolas Filotto

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

Shahid
Shahid

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

Jacob
Jacob

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

Related Questions