2014-03-05 9 views
0

java의 표준 콜렉션에서 어떤 클래스를 최소 힙 또는 최대 힙의 상위 클래스로 만들 수 있는지 알고 싶습니다. 전략에 따라 힙을 min 또는 max로 변환 할 수있는 클래스 Heap을 개발하고 표준 컬렉션 메서드 이름 용도로 사용하기 위해 add, toString, toArray와 같은 메서드를 사용했습니다. 힙에 대한 부모 클래스를 만들어야합니다. 확장 할 수있는 클래스 또는 컬렉션은 무엇입니까?최소 또는 최대 털에 대한 표준 콜렉션

왼쪽 오른쪽 자식의 노드 구조를 사용하고 있습니다.

+1

Java에는 표준 "힙"구조가 없지만 [PriorityQueue] (http://docs.oracle.com/javase/7/docs/api/java/util/PriorityQueue.html)를 사용할 수는 있습니다. 어떤 상황. – user2864740

+1

어쨌든, 나는 커스텀 컬렉션을 위해 기존의 [collection] 클래스를 확장하지 않을 것이지만, 적절한 인터페이스를 구현한다. 가장 간단한 것은'Collection'이다. (상당히 자주 사용하지 않는 문제를 간소화하는 경우를 제외하고는 하위 유형 다형성에 상당히 반대합니다.) – user2864740

답변

1

표준이 없으므로 직접 데이터 구조를 구현하는 것을 권장하지 않습니다. 운좋게도 Guava는 데이터를 저장하기 위해 배열을 사용하는 Atkinson 외의 것에 기반한 implementation of min-max heap을 가지고 있습니다.

2

Javas PriorityQueue (일반적으로 JRE는 다르게 수행 할 수 있음)은 힙으로 구현됩니다.

다른 정렬 순서를 원할 경우 역 비교기를 사용하십시오. Collections.reverseOrder().

최소 또는 최대 힙에 대한 부모 클래스가 필요하지 않습니다. 그것들은 같은 정렬 순서를 가지고 똑같습니다.

아무 것도 아니므로 PriorityQueue을 사용하십시오.