컬렉션 API를 사용하여 셔플합니다
-
05-07-2019 - |
문제
왜 컬렉션 셔플 링이 제대로 작동하지 않는지 알 수 없기 때문에 매우 좌절하고 있습니다.
내가 셔플하려고한다고 가정 해 봅시다 randomizer
정렬.
int[] randomizer = new int[] {200,300,212,111,6,2332};
Collections.shuffle(Arrays.asList(randomizer));
어떤 이유로 어떤 이유로 요소는 셔플 방법을 호출하는지 여부에 관계없이 정확히 동일하게 정렬되었습니다. 어떤 아이디어?
해결책
Arrays.asList
프리미티브 배열과 함께 사용할 수 없습니다. 대신 사용하십시오 :
Integer[] randomizer = new Integer[] {200,300,212,111,6,2332};
Collections.shuffle(Arrays.asList(randomizer));
동일한 규칙은 원시 유형을 사용할 수 없다는 컬렉션 프레임 워크의 대부분의 클래스에 적용됩니다.
원래 코드 (함께 int[]
)은 정상으로 편집되었지만 변수 방법의 동작으로 인해 의도 된대로 작동하지 않았습니다. asList
: 그것은 단지 하나의 요소 목록을 만듭니다. int
유일한 멤버로서 배열.
다른 팁
Chris의 대답이 맞습니다.
Chris의 답변에 대한 의견에서 말했듯이, 배열 목록이 성장하지 않으면 기본 배열이 적절하게 변경되고 목록이 새 제품을 생성하고 항목을 복사합니다.
목록에 대한 참조를 유지하고 Aslist 호출 후 목록을 반복하고 그 후 배열을 반복하지 않고 목록을 반복하십시오.
제휴하지 않습니다 StackOverflow