비슷한 소개
분류 인터페이스입니다.
클래스가 비슷한 인터페이스를 구현하면 "이 클래스는 정렬을 지원합니다"를 의미합니다. 비슷한 인터페이스 지원 정렬을 구현하는 클래스이므로 이제 "비슷한 인터페이스를 구현하는 클래스의 목록 목록 (또는 배열)이 있다고 가정하면 목록 목록 (또는 배열)을 collections.sort (또는 artray.sort)별로 정렬 할 수 있습니다.
또한, 비교기를 지정하지 않고 "비슷한 인터페이스를 구현하는 클래스의 객체"는 "순서 맵 (예 : Treemap)"또는 "순서 세트 (treeset)"의 요소에서 키로 사용할 수 있습니다.
1. 비교기와 비교 가능성은 동일합니다
그것들은 모두 Java 인터페이스이며 사용자 정의 클래스의 크기를 비교하는 데 사용됩니다.
커스텀 클래스는 무엇입니까? 공개 클래스 사람 {문자열 이름; int age}.
Person1, person2, person3 ......, 우리는 collections.sort (personlist)를 포함하는 그러한 사람리스트가있는 경우,
예상 결과는 얻지 못합니다. 누군가 이시기에 물어야하는 이유는 무엇입니까? 왜 우리는 문자열 목록을 정렬 할 수 있습니까?
예를 들어, stringList { "hello1", "hello3", "hello2"}, collections.sort (stringList)는 올바른 정렬을 얻을 수 있습니다.
문자열 객체는 비슷한 인터페이스를 구현하는 데 도움이되었으므로 우리가 정렬하려면 비교기도 구현해야합니다.
2. 비교기와 비교의 차이
유사한
비교할 수있는 사람 클래스 내부에서 정의됩니다.
공공 계급 페르온은 비슷한 {..
비교기가 구현되었으므로 우리는 이제 크기를 비교할 수있는 대상입니다. 비교 함수는 문자열과 정확히 동일하며 사람마다 크기가 다르기 때문에 언제 어디서나 비교할 수 있습니다. Collections.SORT (PersonList)는 올바른 결과를 얻을 수 있습니다.
비교기
비교기는 사람 외부에서 정의됩니다. 현재, 우리 개인 수업의 구조는 다음과 같은 변경 사항을 변경할 필요가 없습니다.
공개 클래스 사람 {문자열 이름; int age},그런 다음 다른 비교기를 정의합니다.
공개 인원은 비교 () {.. Compare Person의 크기 ...}를 구현합니다. 개인 구성 자에서 두 사람의 크기를 비교하는 방법. 따라서이 방법을 사용하여 개인 목록을 정렬하려면
PersonList를 통과하는 것 외에도 개인 크기를 비교하는 방법은 개인의 위반자이기 때문에 PersonComparator를 통과해야합니다.
다음과 같은 구현
Collections.Sort (PersonList, New PersonComparator ()).
3. 비교기 및 비교의 예
유사한:
비교 가능한 인터페이스를 구현하려면 비교 방법을 대체해야합니다. 비교 방법에서 비교를 구현하십시오.
공개 클래스 개인은 비슷한 {문자열 이름; int age; public int compareto (사람의 다른 사람) {int i = 0; i = name.compareto (다른 .name); // 문자열을 사용한 비교 if (i == 0) {// 이름이 동일하다면 연령을 비교하고, 반환 연령 결과 반환 연령 - 다른 경우;} else {return i; // 이름이 다르고 이름 비교 결과를 반환합니다.}}}현재 Collections.Sort (PersonList)로 직접 정렬 할 수 있습니다.
비교기 :
비교기 구현은 비교 방법을 재정의해야합니다.
공개 클래스 사람 {문자열 이름; int age;} 클래스 인원 comparator는 비교기 <person> {public int compor (person one, persone ather) {int i = 0; i = one.name.compareto (다른 .name); // 문자열을 사용한 비교 if (i == 0) {// 이름이 동일하다면 연령을 비교하고 나이 리턴 1.age -other.age;} 비교 결과를 반환합니다 {return i; // 이름이 다르고 이름 비교 결과를 반환합니다.}}} collections.sort (personList, new PersonComparator ()) 정렬 할 수 있습니다.4 : 요약
두 방법 모두 고유 한 장점과 단점이 있습니다. 비교할 수있는 것은 간단합니다. 비슷한 인터페이스를 구현하는 객체가 비슷한 객체가되는 한
그러나 소스 코드를 수정해야합니다. 비교기 사용의 장점은 소스 코드를 수정할 필요는 없지만 비교기도 구현한다는 것입니다. 사용자 정의 객체를 비교해야 할 때 비교기와 객체를 함께 전달하여 크기를 비교할 수 있습니다. 비교기에서 사용자는 스스로 복잡하고 일반적인 논리를 구현하여 비교적 간단한 물체를 일치시킬 수있어 많은 반복적 인 노동을 절약 할 수 있습니다.