2013-09-01 2 views
0

이 문제를 해결할 수있는 라이브러리가 있습니까? 기본 배열 정렬은 사용자 지정 비교자를 처리 할 수 ​​없습니다.사용자 지정 비교기를 사용하여 프리미티브 정렬을 수행하는 Java 라이브러리

+1

해당 래퍼 클래스의 배열을 만들어 정렬 할 수 있습니다. – arshajii

+0

가능한 [사용자 지정 비교기를 사용하여 int 배열을 정렬하는 방법?] (http://stackoverflow.com/questions/3699141/how-to-sort-an-array-of-ints-using-a-custom -comparator) –

+0

사용자 지정 비교기를 사용하여 프리미티브 배열 정렬의 요점은 무엇입니까? –

답변

1

Comparator은 객체에만 사용할 수 있습니다. 기본 유형에는 사용할 수 없습니다.
ArrayUtils 클래스를 사용하면 원시 배열을 래퍼로 또는 그 반대로 변환 할 수 있습니다.
Apache Commons ArrayUtils 클래스를 사용하십시오.

Integer objectArray = ArrayUtils.toObject(array); 
Arrays.sort(objectArray,new MyComparator()); 
int[] sortedArray = ArraysUtils.toPrimitive(objectArray); 
0

글쎄,이 답변을 필요로하지 않습니다하지만 당신이 이것을 뒤에 이유를 이해해야한다고 생각합니다.

모든 기본 데이터 형식 또는 기본 데이터 형식은 자연 순서 대로만 비교할 수 있습니다. 이것은 언어 스펙에 의해 시행됩니다.

자연 주문 : 그룹이 자연 상태에서 어떻게 정렬되어 있는지를 분명히 나타냅니다. 예 : 당신은 자연수를 고려하는 경우는 1 < 2 < 3 < ... < 10와 같은이 또한 많은 이해와 기본 데이터 유형이 언어에 사용되기 때문에, 최적화에 도움이 char

같은 다른 프리미티브의 경우는 것을 항상 true입니다 루프 카운터, switch 문 등과 같은 많은 장소 (place)와 컴파일러는 변수의 자연 순서를 추측 할 수 있다면 실제로 많은 것을 최적화 할 수 있습니다.

더 많은 내용이 있지만 배열 기본 정렬이 원시 데이터 형식에 대한 사용자 지정 Comparator를 제공하지 않는 이유가 확실합니다.

관련 문제