Java에서 가장 큰 요소를 먼저 반환하는 우선 순위에 무엇을 사용해야합니까?

StackOverflow https://stackoverflow.com/questions/627130

  •  06-07-2019
  •  | 
  •  

문제

Java 's 우선권 목록의 헤드에 가장 작은 요소를 배치하지만 머리에 가장 큰 요소를 놓아야합니다. 그렇게 행동하는 우선 순위 대기열을 얻는 가장 깔끔한 방법은 무엇입니까?

이 대기열에 저장된 수업을 썼기 때문에 결과를 뒤집을 수 있습니다. compareTo,이 줄 바깥에는 사용되지 않습니다.

그러나 나는 코드를 내가 모델링하는 것을 정확하게 표현하는 것을 좋아합니다. 제가하려는 것은 가장 먼저 가장 큰 정의가 아니라 최소한의 특이한 정의를 가지고 있다고 말해야합니다.

편집] 간단히 감사합니다. 모두에게 감사합니다. 비교기는 글을 쓰는 방법을 스스로 가르치 자마자 필요한 것 같습니다.

도움이 되었습니까?

해결책

통과 a 비교기 그것은 당신이 인스턴스화 할 때 자연 순서를 뒤집습니다 우선권.

다음과 같이 보일 것입니다.

public class ReverseYourObjComparator implements Comparator<YourObj> {
    public int compare(final YourObj arg0, final YourObj arg1) {
        return 0 - arg0.compareTo(arg1);
    }
}

다른 팁

당신은 기본적으로 당신의 질문에 바로 해결책을 가지고 있습니다 : 당신은 비교기 a의 생성자에게 우선권. 비교기는 항목을 주문하는 방식에 영향을 미칩니다.

나는 단지 비교기를 사용합니다. 이런 식으로 정렬 순서는 클래스에 첨부되지 않고 대기열에서만 사용됩니다.

간단히 제공하십시오 PriorityQueue 사용자 지정 Comparator<? super E> 생성자를 Throgh하고 요소의 순서를 변경하십시오.

Javadocs :

PriorityQueue(int initialCapacity, Comparator<? super E> comparator) 

비교기 주석에 추가하려면 다음을 확인하십시오.

Collections.reverseOrder();

PriorityQueue의 API 문서는 다음과 같이 말합니다. 따라서 최소한의 정의는 특정 순서를 기반으로 주관적이므로 비교기를 제공 할 수있는 옵션이 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top