>Java >java지도 시간 >Java의 PriorityQueue에서 사용자 정의 정렬 순서를 어떻게 구현할 수 있습니까?

Java의 PriorityQueue에서 사용자 정의 정렬 순서를 어떻게 구현할 수 있습니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-30 18:28:13268검색

How Can I Implement a Custom Sort Order in Java's PriorityQueue?

Java PriorityQueue의 사용자 정의 정렬 순서

소개

Java의 기본 데이터 구조인 PriorityQueue는 효율적인 방법을 제공합니다. 우선순위에 따라 정렬된 요소를 관리합니다. 그러나 기본 정렬 메커니즘이 항상 원하는 정렬 순서와 일치하지 않을 수도 있습니다.

사용자 정의 정렬 순서

PriorityQueue에 대한 사용자 정의 정렬 순서를 지정하려면 생성자를 사용하세요. 비교기를 사용하는 과부하 비교기. 원하는 정렬 순서에 따라 요소를 비교하는 비교기를 전달합니다.

비교기 구현

비교기는 비교 논리를 지정하기 위해 비교 메서드를 구현해야 합니다. 이 메서드는 두 요소를 사용하고 상대 순서를 나타내는 정수를 반환합니다.

  • 첫 번째 요소가 두 번째 요소보다 먼저 와야 하는 경우 -1
  • 요소가 동일한 경우 0
  • 1 첫 번째 요소가 다음 요소 뒤에 와야 하는 경우 second

문자열의 PriorityQueue를 문자열 길이에 따라 오름차순으로 정렬하려는 예를 생각해 보세요. 다음은 샘플 비교기와 PriorityQueue 사용법입니다.

import java.util.*;

class StringLengthComparator implements Comparator<String> {
    @Override
    public int compare(String x, String y) {
        return x.length() - y.length(); // Sort by ascending length
    }
}

...
Comparator<String> comparator = new StringLengthComparator();
PriorityQueue<String> queue = new PriorityQueue<>(10, comparator);
queue.add("short");
queue.add("very long indeed");
queue.add("medium");

추가 및 제공

추가 및 제공 모두 PriorityQueue 인터페이스의 메소드 구현입니다. 일반적으로 다르게 동작할 수 있지만 PriorityQueue의 컨텍스트에는 제한이 없기 때문에 실질적인 차이가 없습니다.

출력

PriorityQueue는 다음 요소를 제공합니다. 지정된 정렬 순서. 위의 예에서 출력은 다음과 같습니다.

short
medium
very long indeed

위 내용은 Java의 PriorityQueue에서 사용자 정의 정렬 순서를 어떻게 구현할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.