2016-08-19 14 views
1

Java에서 IntegerArrayList<Integer>에 있는지를 확인하려고합니다. this general solution을 사용해 보았습니다. 은 프리미티브의 배열에서 작동하지 않는다고 경고합니다. Integer은 프리미티브가 아니기 때문에 (int에 해당) 문제가되지 않습니다.ArrayList의 값이 <Integer>입니까? (Java)

ArrayList<Integer> ary = new ArrayList<Integer>(); 
ary.add(2); 

System.out.println(String.format("%s", Arrays.asList(ary).contains(2))); 

반품 false. 이유가 무엇입니까? 덜 자세한 정보가 있지만 더 나은 것은 도움이됩니다.

+1

왜 'Arrays.asList (ary)'를 호출합니까? 'ary'는'ArrayList '로 선언 되었습니까? – bradimus

+0

죄송합니다.'Array '이'List '에서 상속 받았기 때문에'contains()'메소드가 이미 있습니다 ... 이것은 사소한 질문 이었으므로 커뮤니티에 맡기 겠습니다 그것을 지킬지를 결정하는 것. –

답변

4

false을 반환하는 이유는 무엇입니까?

단순히 Arrays.asList(ary)List<ArrayList<Integer>> 반환하기 때문에 당신은 그것을 작동 할 수없는 Integer 포함되어있는 경우 찾아보십시오. 나머지으로

여기 Arrays.asList(ary)

public static <T> List<T> asList(T... a)의 자바 독이다 리턴 지정된 배열에 연동하는 고정 크기 목록 . 여기

당신은 인수 ArrayList<Integer>로, 당신이 그렇게 List<ArrayList<Integer>> 제공 무엇을 List을 반환합니다 제공한다.

ary.contains(myInteger)과 같은 목록에 List#contains(Object) 전화를해야합니다.

1

asList()은 ArrayList 자체의 목록이므로 필요하지 않습니다. 또한 결과를 인쇄하기 위해 String.format()이 필요하지 않습니다. 이런 식으로하십시오. 이 true 반환

System.out.println(ary.contains(2)); 
1

문제는 당신이 이미 때 목록에 ArrayList를 강요하기 위해 노력하고 있다는 점이다. Arrays.asList는 배열의 수 또는 가변 개수의 인수를 취하여 모든 것을 목록에 추가합니다. 당신이해야 할 일은 System.out.println (ary.contains (2))를 호출하는 것입니다.

관련 문제