java.lang.Comparable

org.apache.hadoop.io.WritableComparable extends Writable, Comparable
Key를 쓸 때 Writable Comparable를 사용해서 여기까지 쫓아왔습니다.다음은 옮겨 싣는 물건인데, 스스로 시험해 보니 간단명료하다
이 인터페이스는 모든 종류의 대상을 강제로 정렬합니다.이 정렬을 이 클래스의 자연 정렬이라고 하고 클래스의 compareTo 방법을 자연 비교 방법이라고 합니다.Collections.sort(및 Arrays.sort)는 자동으로 정렬됩니다.이 인터페이스를 실현하는 대상은 질서정연한 맵의 키나 질서정연한 집합의 요소로 사용할 수 있으며 비교기를 지정할 필요가 없습니다.Comparable 성형수 그룹 정렬 완료
import java.util.Arrays;


public class MyInteger implements Comparable<Object>{
		private int n;
		public MyInteger(int n) {
		this.n = n;
	}
		
	public int compareTo(Object o) {
		if (o instanceof MyInteger){
		   MyInteger mi = (MyInteger)o;
		   if (mi.n == this.n){
		    return 0;
		   }
		   else if (mi.n > this.n){
		    return 1;
		   }
		   else {
		    return -1;
		   }
		}
		else {
		   return -1;
		}
	}
	
	public static void main(String[] args) {
		int n = 10;
		MyInteger []mis = new MyInteger[n];
		for (int i = 0;i < mis.length; i++){
		   mis[i] = new MyInteger((int)(Math.random() * 100));
		}
		for (MyInteger m:mis){
		   System.out.print(m.n + "\t");
		}
		Arrays.sort(mis);
		System.out.println();
		for (MyInteger m:mis){
		   System.out.print(m.n + "\t");
		}
	}
}

 
Comparable 인터페이스를 실현한 클래스는 Collection (집합) 에서 정렬할 수 있으며, 정렬의 규칙은 당신이 실현한 Comparable의 추상적인 방법인 compareTo (Object o) 방법에 따라 결정됩니다.
compareTo 메서드는 Object에서 선언되지 않았습니다. 이것은 java입니다.lang.Compareable 인터페이스의 유일한 방법입니다.하나의 클래스가Compareable 인터페이스를 실현하면, 그 실례가 내재된 정렬 관계 (natural ordering) 를 가지고 있음을 나타낸다.만약 하나의 그룹의 대상이Compareable 인터페이스를 실현한다면, 이 그룹에 대한 정렬은 매우 간단합니다:Arrays.sort();집합에 저장된Comareable 대상에 대해 검색, 극값 계산, 자동 유지보수 작업은 매우 간단합니다.일단 당신의 클래스가Compareable 인터페이스를 실현하면 많은 일반 알고리즘(generic algorithm)과 이 인터페이스의 집합에 의존하는 조작과 협업을 실현하여 작은 노력으로 강력한 기능을 얻을 수 있습니다.자바 플랫폼 라이브러리의 모든 값 클래스 (value classes) 는Compareable 인터페이스를 실현합니다.
compareTo의 약정은 현재 이 대상을 지정한 대상과 순서대로 비교하는 것이다. 이 대상이 지정한 대상보다 작거나 같거나 크면 각각 음정수, 0 또는 양정수를 되돌려주고 비교할 수 없으면 ClassCastException 이상을 던진다.
import java.util.*;
public class EmployeeSortTest {

	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Employee[] staff = new Employee[3];
		staff[0] = new Employee("harry Hacker",35000);
		staff[1] = new Employee("carl cracke",75000);
		staff[2] = new Employee("tony Tester",38000);
		
		Arrays.sort(staff);//sort ,  Comparable 
		
		for(Employee e: staff)
		System.out.println("id=" + e.getId() + " name=" + e.getName() +
		".salary=" + e.getSalary());
	}
	
}
	
class Employee implements Comparable<Employee>
{
	public Employee(String n,double s)
	{
		name = n;
		salary = s;
		Random ID = new Random();
		id = ID.nextInt(10000000);
	}
	public int getId()
	{
		return id;
	}
	public String getName()
	{
		return name;
	}
	
	public double getSalary()
	{
		return salary;
	}
	
	public void raiseSalary(double byPercent)
	{
		double raise = salary * byPercent / 100;
		salary += raise;
	}
	
	public int compareTo(Employee other)
	{
		if(salary < other.salary)//  sort 
		return -1;
		if(salary > other.salary)
		return 1;
		return 0;
	}
	private int id;
	private String name;
	private double salary;
}

좋은 웹페이지 즐겨찾기