Comparable 및 Comparator의 차이점 및 사용
Comparable &Comparator는 모두 대상의 비교, 정렬을 실현하는 데 쓰인다
2. Comparable과 Comparator의 차이점:
주요 차이점:Comparable는 구체적으로 비교할 대상에 정의된(대상은Comparable 인터페이스를 실현하고compareTo()))이며,Comparator는 비교기로서 대상을 비교하는 도구류를 사용자 정의한다.
3. Comparable 사용:
java를 실현합니다.lang.Comparable 인터페이스는 당신의 종류를 타고난 비교 능력을 가지게 합니다.java의 8가지 기본 유형은Comparable 인터페이스를 실현했습니다.
public class User implements Comparable<User>{
private int age;
private int userNo;
public int getUserNo() {
return userNo;
}
public void setUserNo(int userNo) {
this.userNo = userNo;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
/**
* age
*/
public int compareTo(User user) {
return age>user.age ? 1 : (age==user.age ? 0 : -1);
}
public static void main(String args[]){
User user1 = new User();
user1.setAge(1);
User user2 = new User();
user2.setAge(2);
System.out.println(user1.compareTo(user2));//
User[] users = new User[]{user1,user2};
Arrays.sort(users);// , Collection Collections.sort(..)
for(int i=0;i<users.length;i++){
System.out.println(users[i].getAge());
}
}
}
4. Comparator 사용:
만약에 누군가가 당신에게 Comparable를 실현하지 못한 클래스를 주거나 당신에게 준 클래스가 Comparable를 실현시켰다면 당신이 그것을 실현하는 방식을 좋아한다면 다른 비교 방법이 필요합니다.Comparator는 정책 모드(strategy 디자인 pattern)로 대상 자체를 바꾸지 않고 하나의 정책 대상(strategy object)으로 행동을 바꾸는 것이다.이 인터페이스에는 compare () 와 equels () 두 가지 방법이 있지만, 반드시 equels () 를 실현해야 하는 것은 아닙니다. 특별한 요구가 없으면 모든 종류가 Object를 계승하기 때문입니다. Object는 equals () 방법이 있습니다.
public class ComparatorTest{
static Comparator<User> comparator = new Comparator<User>(){
@Override
/**
*
*/
public int compare(User user1, User user2) {
return user1.getUserNo()-user2.getUserNo();
}
};
public static void main(String args[]){
User user1 = new User();
user1.setAge(1);
user1.setUserNo(2);
User user2 = new User();
user2.setAge(2);
user2.setUserNo(1);
User[] users = new User[]{user1,user2};
Arrays.sort(users,comparator);// , Collection Collections.sort(..)
for(int i=0;i<users.length;i++){
System.out.println(users[i].getAge());
}
}
}
주의: 그룹과 집합에 대한 정렬 시 오름차순 또는 내림차순은compareTo()와compare() 두 가지 방법에서 되돌아올 때 -1인지 1인지에 따라 결정됩니다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 프로그래밍 : 객체지향 (4) Comparable - 객체 정렬Comparable 인터페이스는 Array/ArrayList 를 알파벳순 혹은 숫자 오름차순/내림차순으로 정렬해주는 역할을 합니다. 사용을 위해서는 아래와 같이 Collections 클래스를 import 해줍니다. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.