package chapter4;
import java.util.Arrays;
import java.util.Collections;
class People implements Comparable<People> { //calss People 생성 <People> : 인터페이스 Comparable은 People 객체의 정보를 가진다
private String name; //생성자
private int age; //생성자
public People(String name, int age) {
this.name = name;
this.age = age;
}
public String print() {
return "이름: " + name + " 나이: " + age;
}
@Override //메소드 오버라이딩
public int compareTo(People p) { //compareTo를 이용하여
return this.age - p.age; //현재 들어있는 값에서 매개변수를 통해 들어온 값을 빼줌 여기서 음수면 왼쪽으로 양수면 오른쪽으로 0이면 그대로 위치
}
}
public class SortEx1 {
//정렬
public static void main(String[] args) {
Integer[] arr = {4, 23, 33, 15, 17, 19}; /*정렬을 위한 배열 arr 여기서 자료형인 int로 배열선언을 할 경우 내림차순의Collections 클래스에 접근을 하지 못하기 때문에 내림차순이 되지 않으므로 클래스 Integer형의 arr객체로 배열을 선언한다*/
Arrays.sort(arr); /*Arrays 클래스 : 항목 정렬, 항목 검색, 항목 비교와 같은 메소드들을 제공 + 배열 항목 정렬을 하는 메소드 sort + 정렬을 위한 (arr) 기본적으로 항목정렬은 오름차순으로 진행함*/
for(int i : arr) { /*arr에 담긴 정보들을 int i 라는 변수에 넣어줌*/
System.out.println(i); /* 출력형태 : 4 15 17 19 23 33 (오름차순) */
}
Arrays.sort(arr, Collections.reverseOrder()); /*내림차순정렬 : 내림 차순 정렬을 하기 위해서는 sort메소드 안에 내림차순을 할 배열명과 Collections.reverseOrder()을 붙인다*/
for(int i : arr) {
System.out.println(i); /*출력형태 : 33 23 19 17 15 4 (내림차순)*/
}
People[] pe = { new People("준일", 20), //People 클래스 pe 객체 생성
new People("은수", 30),
new People("종원", 24),
new People("대양", 22)
};
Arrays.sort(pe); //오름차순
for(People p : pe) { //pe라는 객체를 People 클래스 p객체에 담고
System.out.println(p.print()); //print메소드에 접근해서 출력 출력형태 : 이름: 준일 나이: 20 이름: 대양 나이: 22 이름: 종원 나이: 24 이름: 은수 나이: 30
}
Arrays.sort(pe, Collections.reverseOrder()); //내림차순
for(People p : pe) {
System.out.println(p.print()); //내림차순후 print메소드에 접근해서 출력 출력형태 : 이름: 은수 나이: 30 이름: 종원 나이: 24 이름: 대양 나이: 22 이름: 준일 나이: 20
}
}
}
JAVA