JAVA/코드
2022_10_24 연습3 Array.메서드 (정렬예제)
0304호
2022. 10. 24. 17:58
정렬의 다양한 방법
package newnew;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
PersonVO[] persons = {
new PersonVO(1,"수지", 29),
new PersonVO(2,"아이유", 30),
new PersonVO(3,"카리나", 23),
new PersonVO(4,"아담", 46),
};
//Arrays.sort 메서드는 배열을 대입하면 부등호 혹은 compareTo라는 메서드를 호출해서
//크기 비교를 한 후 정렬을 수행해 준다.
// Arrays.sort(persons);
//동적으로 크기 비교 하는 메서드를 설정
//1. 이름의 오름차순 2. 이름의 내림차순 3. 나이의 오름차순 4. 나이의 내림차순
Scanner scan = new Scanner(System.in);
System.out.println("1. 이름의 오름차순 2. 이름의 내림차순 3. 나이의 오름차순 4. 나이의 내림차순");
String menu = scan.nextLine();
switch(menu.trim()) {
case "1":
System.out.println("이름의 오름차순");
Arrays.sort(persons, new Comparator<PersonVO>() {
public int compare(PersonVO o1, PersonVO o2) {
return o1.getName().compareTo(o2.getName());
}
});
break;
case "2":
System.out.println("이름의 내림차순");
Arrays.sort(persons, new Comparator<PersonVO>() {
public int compare(PersonVO o1, PersonVO o2) {
return o2.getName().compareTo(o1.getName());
}
});
break;
case "3":
System.out.println("나이의 오름차순");
Arrays.sort(persons, new Comparator<PersonVO>() {
public int compare(PersonVO o1, PersonVO o2) {
return o1.getAge()-o2.getAge();
}
});
break;
case "4":
System.out.println("나이의 내림차순");
Arrays.sort(persons, new Comparator<PersonVO>() {
public int compare(PersonVO o1, PersonVO o2) {
return o2.getAge()-o1.getAge();
}
});
break;
default :
System.out.println("메뉴는 1~4번만 선택하세요");
break;
}
scan.close();
// Arrays.sort(persons, new Comparator<PersonVO>() {
//
// @Override
// public int compare(PersonVO o1, PersonVO o2) {
// // TODO Auto-generated method stub
// return o2.getAge() - o1.getAge();
// }
//
// });
//
//배열의 데이터 출력
//Arrays.toString은 배열의 각 요소의 toString을 전부 호출해서
//하나의 문자열로 리턴하는 매서드이다.
System.out.println(Arrays.toString(persons));
// System.out.println(System.identityHashCode(persons)); //해쉬코드 뽑는법
}
}
package newnew;
import java.util.Arrays;
public class PersonVO implements Comparable<PersonVO>{
private int num;
private String name;
private int age;
//매개변수가 없는 생성자 = Default Constructor
public PersonVO() {
super();
// TODO Auto-generated constructor stub
}
//속성을 전부 매개변수로 받는 생성자 = 인스턴스 생성 후 값을 빠르게 대입하기 위해서 생성
public PersonVO(int num, String name, int age) {
super();
this.num = num;
this.name = name;
this.age = age;
}
//Getter & Setter : 속성의 값에 접근하고 변경하기위한 메서드
//일반적으로 VO 클래스의 경우는 Setter을 만들지 않음
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//데이터 출력을 편리하게 하기 위한 메서드
//출력하는 메서드에 인스턴스 이름을 대입하면 이 메서드가 호출되서 출력됩니다.
@Override
public String toString() {
return "PersonVO [ num = " + num + ", name = " + name + ", age = " + age + "]";
}
//크기 비교하는 메서드 : 정렬하기 위해서 사용
public int compareTo(PersonVO o) {
// 크기 비교 방법 설정
return this.name.compareTo(o.name) ;
}
}