Language/Java

PriorityQueue에서의 Comparator 사용법

뚜sh뚜sh 2023. 10. 6. 23:43

아래 코드는 우선순위 큐의 Comparator을 통해 새로운 조건을 제공함

 

- 조건1) 절댓값이 같을 경우,  el1이 el2보다 큰 순서로 취급되어 el2의 우선순위가 더 높아 음수가 먼저 출력됨

- 조건2) 절댓값이 다를 경우, abs_el1이 abs_el2보다 큰 순서로 취급되어 abs_el2의 우선순위가 더 높아 작은 값이 출력됨

PriorityQueue<Integer> priorityQueue = new PriorityQueue<>((el1, el2) -> {
			int abs_el1 = Math.abs(el1);
			int abs_el2 = Math.abs(el2);
			
			if (abs_el1 == abs_el2) {
				return el1 > el2 ? 1 : -1;
			}
			
			return abs_el1 - abs_el2;
});