students.stream()
.sorted(Comparator.comparing(Student::getCgpa).reversed()
.thenComparing(Student::getFirstName)
.thenComparing(Student::getId))
.map(Student::getFirstName)
.collect(Collectors.toList());
Double을 Checker(Comparator)에서 비교시에는 *100 이런거 하면 안됨. (미세 소수 오류발생)
class Checker implements Comparator<Student> {
@Override
public int compare(Student p1, Student p2) {
return Double.compare(p2.getScore(),p1.getScore()); //DESC
}
}
anonymous Comparator 클래스 생성으로 비교하는 법. 1. => compare(int 아니고=> Integer인 부분 주의 필요)
int[] intArr = new int[] {1,2,6, 4, 9, 7};
List<Integer> sortedInt = Arrays.stream(intArr).boxed()
.sorted(new Comparator<Integer>() {
@Override
public int compare(Integer a, Integer b) {
return Integer.compare(a,b);
}
})
.collect(Collectors.toList());
log.info(""+sortedInt);
anonymous Comparator 클래스 생성으로 비교하는 법. 2
int[] intArr = new int[] {1,2,6, 4, 9, 7};
int maxInt = Arrays.stream(intArr).boxed()
// .max(Integer::compare)
.max(new Comparator<Integer>() {
@Override
public int compare(Integer a, Integer b) {
return Integer.compare(a,b);
}
})
.orElse(-1);