콜렉션 클래스로 생성된 객체를 처리하는 기능을 제공하는 클래스
Collections.sort(List< T > list)
객체 필드값을 비교한 결과값을 반환하는 추상메소드가 작성된 인터페이스
compareTo() 메소드를 오버라이딩 선언하여 자식클래스의 객체(this) 필드값을 매개변수로 전달받은 객체 필드값과 비교하여 양수, 음수, 0 중 하나를 반환하는 명령 작성
객체의 필드값을 비교하기 위한 클래스가 반드시 상속받아야 되는 인터페이스
// Comparable 인터페이스 : 객체 필드값을 비교한 결과값을 반환하는 추상메소드가 작성된 인터페이스
// => compareTo() 메소드를 오버라이딩 선언하여 자식클래스의 객체(this) 필드값을 매개변수로
// 전달받은 객체 필드값과 비교하여 양수, 음수, 0 중 하나를 반환하는 명령 작성
// => 객체의 필드값을 비교하기 위한 클래스가 반드시 상속받아야 되는 인터페이스
// 학생정보(학번, 이름)를 저장하기 위한 클래스
// => List 객체에 저장된 학생정보를 비교하여 정렬하기 위해 Comparable 인터페이스를 상속받아 작성
public class Student implements Comparable<Student> {
private int num;
private String name;
public Student() {
// TODO Auto-generated constructor stub
}
public Student(int num, String name) {
super();
this.num = num;
this.name = name;
}
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;
}
@Override
public String toString() {
return "{학번 = "+num+", 이름 = "+name+"}";
}
@Override
public int compareTo(Student o) {
// 학번(정수값)을 빼기(-) 연산 처리하여 결과값(양수, 음수, 0)을 반환 - 학번 정렬 처리
return this.num-o.num;//오름차순 정렬
// return o.num-this.num;//내림차순 정렬
// 이름(문자열)은 String 클래스의 compareTo() 메소드를 호출하여 결과값(양수, 음수, 0)을
// 제공받아 반환 - 이름 정렬 처리
// return this.name.compareTo(o.name);//오름차순 이름
// return o.name.compareTo(this.name);//내림차순 이름
}
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class StudentApp {
public static void main(String[] args) {
List<Student> studentListOne=new ArrayList<Student>();
studentListOne.add(new Student(3000, "전우치"));
studentListOne.add(new Student(2000, "임꺽정"));
studentListOne.add(new Student(1000, "홍길동"));
studentListOne.add(new Student(5000, "장길산"));
studentListOne.add(new Student(4000, "일지매"));
System.out.println("정렬 전 >> ");
System.out.println(studentListOne);
System.out.println();
// Collections 클래스 : 콜렉션 클래스로 생성된 객체를 처리하는 기능을 제공하는 클래스
// Collections.sort(List<T> list) : 매개변수로 전달받은 List 객체의 요소값을 정렬하는
// 기능을 제공하는 정적메소드
// => List 객체에 저장된 요소값(객체)의 필드값을 비교하는 compaerTo() 메소드를 자동
// 호출하여 정렬 처리
Collections.sort(studentListOne);
System.out.println("정렬 후 >> ");
System.out.println(studentListOne);
System.out.println("==============================================================");
List<Student> studentListTwo=new ArrayList<Student>();
studentListTwo.add(new Student(6000, "유재석"));
studentListTwo.add(new Student(7000, "강호동"));
studentListTwo.add(new Student(8000, "신동엽"));
studentListTwo.add(new Student(9000, "전현무"));
Map<Integer, List<Student>> studentListMap=new HashMap<Integer, List<Student>>();
studentListMap.put(1, studentListOne);
studentListMap.put(2, studentListTwo);
for(Integer ban : studentListMap.keySet()) {
System.out.println(ban+"반의 학생정보 >> ");
List<Student> studentList=studentListMap.get(ban);
for(Student student : studentList) {
System.out.println(student); // Student 클래스의 toString() 메소드 자동 호출
}
System.out.println();
}
System.out.println("==============================================================");
}
}