반응형
규칙! 음수를 리턴하면 자리 바꿈. 0 또는 양수를 리턴하면 자리 안바꿈
그래서
오름차순 할때 : 오른쪽이 크면 음수 (오른쪽이 앞쪽 인덱스)
내림차순 할때 : 왼쪽이 크면 음수 (오른쪽이 앞쪽 인덱스)
1. Comparator 인터페이스 구현
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
class Student{
String name;
int math;
int science;
Student(String name, int math, int science){
this.name = name;
this.math = math;
this.science = science;
}
}
public class CollectionMain {
public static void main(String [] args){
List<Student> studentList = new ArrayList<Student>();
studentList.add(new Student("A", 20, 30));
studentList.add(new Student("B", 40, 50));
studentList.add(new Student("C", 30, 30));
Collections.sort(studentList, new Comparator<Student>() {
@Override
// o1 앞에거 o2 뒤에꺼
// 리턴 음수 : 바꾸기
// 리턴 양수 : 그대로
public int compare(Student o1, Student o2) {
// 큰 것이 위로
if(o1.science < o2.science)
return 1;
else if(o1.science > o2.science)
return -1;
else{
// 과학 점수가 같으면 수학점수 확인
if(o1.math < o2.math){
return 1;
}else{
return -1;
}
}
}
});
for (Student tmp : studentList
) {
System.out.println(tmp.name);
}
}
}
2. Comparable 인터페이스 구현
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
class Student2 implements Comparable<Student2>{
String name;
int math;
int science;
Student2(String name, int math, int science){
this.name = name;
this.math = math;
this.science = science;
}
@Override
public int compareTo(Student2 o) {
if(this.science < o.science)
return 1;
else if(this.science > o.science)
return -1;
else{
if(this.math < o.math){
return 1;
}else{
return -1;
}
}
}
public class CollectionMain {
public static void main(String [] args){
List<Student2> studentList2 = new ArrayList<Student2>();
studentList2.add(new Student2("A", 20, 30));
studentList2.add(new Student2("B", 40, 50));
studentList2.add(new Student2("C", 30, 30));
Collections.sort(studentList2);
for (Student2 tmp : studentList2
) {
System.out.println(tmp.name);
}
}
}
}
반응형
'개발' 카테고리의 다른 글
Java - TreeSet (0) | 2021.06.06 |
---|---|
Java - HashSet (0) | 2021.06.06 |
Java - Arrays (0) | 2021.06.06 |
Java - 스택과 큐 (Stack & Queue) (0) | 2021.06.06 |
Java - LinkedList (0) | 2021.06.06 |