1

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.

2
  • 1
    Why do you call Arrays.asList(ary)? ary was declared as an ArrayList<Integer>? Commented Aug 19, 2016 at 16:39
  • Sorry, I didn't realize ArrayList<T> inherited from List<T> and thus already had a contains() method... This was kind of a trivial question, so I'll leave it up to the community to decide whether to keep it or not. Commented Aug 19, 2016 at 16:47

3 Answers 3

4

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).

Sign up to request clarification or add additional context in comments.

Comments

1

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));

Comments

1

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));

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.