2013-02-03 3 views
0
List<Integer> list = Collections.shuffle(list); 

이 할당이 작동하지 않습니다. 분명히 List이고 .shuffle()List인데도 "호환되지 않는 유형"을 제공합니다. 그렇다면 왜이 기능이 작동하지 않을까요?할당 문이 작동하지 않습니다.

+0

'수집'은 일반적으로 변경 가능합니다. 그들에 대한 조작은 일반적으로 제 위치에서 발생합니다. –

+0

문서를 읽지 않아도 API에 대해 분노하는 것은 상당히 재미 있습니다. – Jack

답변

3

javadoc을 확인하십시오. Collections.shuffle에는 void 반환 유형이 있습니다. List을 먼저으로 만든 다음 임의로 만듭니다. 예를 들어 :

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5); 
Collections.shuffle(list); 
System.out.println("Shuffled List: " + list); 
+0

또 다른 문제가 있습니다.'List list = new ArrayList (list);'도 컴파일되지 않습니다. – amit

+0

보이드 리턴 타입? 그럼 어떻게 접근해야합니까 ??? –

+0

전달한'List'를 수정하므로 할당 할 필요가없고'list' 참조 만 다시 사용하십시오. – Reimeus

1

실제로 두 가지 문제가 있습니다, 당신은List list = new ArrayList(list);가 작동하지 않습니다 심지어 코드를 선언 초기화 /하기 전에 변수를 액세스 할 수 없습니다

  1. 의 오른쪽 피연산자 때문에 할당은 왼쪽 피연산자보다 먼저 구문 분석됩니다.
  2. @Reimeus에 의해 언급 된 바와 같이 Collections.shuffle()void 반환 유형을 가지므로 변수에 결과 ("결과")를 할당 할 수 없습니다. shuffle() 메서드는 입력으로 주어진 동일한 목록을 변경합니다 (기능적 프로그래머에게는 직관적이지 않을 수도 있음).
관련 문제