简体   繁体   中英

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM