두 쌍의 항목이 다른 쌍의 항목보다 엄격하게 작 으면 쌍을 다른 쌍보다 작게 간주하고 두 항목이 모두 두 쌍의 항목보다 엄격하게 큰 경우 다른 쌍보다 큰 경우 다른 한 쌍. 다른 모든 경우는 비교할 수없는 것으로 간주됩니다.내 Comparator가 위아래로 버블 링하는 동안 예외를 throw하면 PriorityQueue는 어떻게됩니까?
이 문제를 해결하려면 위의 내용을 구현하는 Comparator
을 정의하는 것이지만 비교할 수없는 경우 예외가 발생하고 PriorityQueue
에 제공해야합니다. 물론, 짝을 삽입하는 동안 우선 순위 큐는 힙에서 올바른 위치로 새 항목을 버블 링하는 동안 몇 가지 비교를 수행하며, 이들 중 많은 부분이 비교 될 것입니다. 그러나이 새로운 쌍을 비교할 수없는 쌍이 발생하고 예외가 발생하는 버블 링 프로세스 중에 발생할 수 있습니다. 이 경우 PriorityQueue
의 상태는 어떻게됩니까? 예외를 던지기 전에 내가 삽입하려고했던 쌍이 마지막 위치에 힙에 앉아있을 것입니까? PriorityQueue's remove(Object o)
메서드를 사용하면 PriorityQueue
이 일관된 상태로 복원됩니까? 는 PriorityQueue 인의 아니다으로, 의미가 -
감사
내가 실제로하려고하는 것은 엄격하게 성장하는 쌍 중에서 가장 긴 시퀀스를 얻는 것입니다. 예외를 던지면이 시퀀스에 맞지 않는 쌍을 취소하려고합니다. BTW : 나는 그것을 포기하고, 내 힙에 null 요소로 끝났다. –
아마도 PriorityQueue가 당신이 원하는 것을위한 최상의 데이터 구조가 아닐까요? –