2017-09-11 9 views
-6

Java에서 비교 가능 및 비교기 인터페이스과 관련하여 내부적으로 사용되는 정렬 기법은 무엇이며 다른 정렬 기법과 비교하여 정렬 기법을 사용하는 이유는 무엇입니까?비교기 및 비교 가능한 인터페이스에 사용되는 내부 분류 기술은 무엇이며 그 이유는 무엇입니까?

+3

'Comparable'도 'Comparator'도 정렬을 수행하지 않습니다. – slim

+0

이것은 비교 및 ​​비교 기능 [link] (http://www.journaldev.com/780/comparable-and-comparator-in-java-example)의 기능을 이해하는 데 도움이됩니다 – Pmanglani

+0

인터페이스 ... 인터페이스 . 그것은 "내부"가 없습니다. 그렇습니다. Java 8에서는 더 이상 틀림없이 더 이상 사실이 아닙니다. 그러나 Comparable 및 Comparator에서는 확실히 사실입니다. –

답변

0

ComparableComparator은 모두 인터페이스입니다. 그들이하는 일은 은 하나의 물체가 다른 물체보다 크거나 같거나 작은 물체를 묻는 방법을 정의합니다..

인터페이스가 의미하는 바를 시행하지 않습니다. 즉, 이 인터페이스 인을 구현하는 클래스까지입니다. 따라서 Comparator<Employee>은 A가 B에서 알파벳 앞에 오기 때문에 Adam이 Bill보다 "더 큽니다"라고 말할 수 있습니다. Comparator<Employee>은 Bill이 회사와 더 오래 있기 때문에 Bill이 "Adam보다 큽니다"라고 말할 수 있습니다.

모든 정렬 알고리즘은 두 항목을 비교하여 어느 항목이 먼저 출력되어야하는지 알 수 있어야합니다. 거품 정렬을 작성한 경우 Comparator을 사용하여 항목을 비교할 수 있습니다.

자바는 Arrays.sort(), Collections.sort(), Stream::sorted을 포함하여 몇 군데에 내장 된 정렬을 가지고 있습니다.

구현은 파이썬 (TimSort)에 대한 팀 피터스 (Tim Peters)의 목록 정렬에서 적응했다 : ArraysCollections에 대한

Javadoc을

는 것을 말한다. 그것은 베드로 위권에 드는 맥 킬로의 "낙관적 정렬 및 정보 이론적 복잡성"에서 techiques를 사용, 이산 알고리즘, PP 467-474에 제 4 회 ACM-SIAM 심포지엄 논문집, 1993 년 1 월

Stream에 대한 JavaDoc을 지정하지 않는 정렬 방법 - 구현이 달라질 수 있기 때문에 이것이 의심 스럽습니다.