java.lang.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;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
하나의 수조를 깊이가 가장 낮은 두 갈래 나무로 바꾸다문제 정의: Givena sorted(increasing order) array, write an algorithm to create abinary tree with minimal height. 생각: 이 문제는 비...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.