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);

 

Posted by yongary
,