2014-11-13 3 views
1

arraylist를 사용하여 Java에서 내 자신의 일반적인 바이너리 힙을 구현해야합니다. 최대 힙 및 최소 힙을 지원해야합니다. Comparator를 BinaryHeap 생성자에 전달하여 구현해야합니다.비교기를 슈퍼 생성자로 전달

전달 된 Comparator의 compare-method가 수행하는 작업에 따라 최소 또는 최대 힙이되는 것 같습니다. 나는 기본 PQ (기본 분)를 만들고 PQ를 확장하고 Comparator를 슈퍼 생성자에 전달하는 MaxPQ 클래스를 작성한다고 생각했습니다. 하지만 첫 번째 줄에서 슈퍼를 호출해야하므로 Comparator를 어디에서 초기화해야할지 모르겠습니다. 어떤 아이디어?

import java.util.Comparator; 

public class MaxHeap<Bid> extends BinaryHeap<Bid> { 

    public MaxHeap(){ 

     MaxComp maxComp = new MaxComp(); 
     super(maxComp); 

    } 

} 

class MaxComp implements Comparator<Bid>{ 
    public int compare(Bid a, Bid b){ 
     return (a.val - b.val); 
    } 

} 

시도 Dmitrys 조언 super(new MaxComp());, "BinaryHeap<Bid>(MaxComp) is undefined" 제작 :

다음은 MaxHeap에 대한 코드입니다. 작업중인 입력하는 당신이 이미 지정했기 때문에,

super(new MaxComp()); 

을 대신 MaxHeap<Bid> extends ... 사용 MaxHeap extends ...로, 다음과 같은

public class BinaryHeap<E>{ 

    private Comparator<? super E> comp; 
    private ArrayList<E> array; 

    private int last; // index of last element 

    public BinaryHeap(Comparator<? super E> comp){ 
     this.comp = comp; 
     array = new ArrayList<E>(); 
    } 
+1

몇 가지 코드를 보여주십시오. 그래서 당신이하고 싶은 것을 명확하게하고 어떻게하고 싶으십니까? –

+0

PQ는 무엇을 의미합니까? –

+0

PriorityQueue, 기본적으로 synonoyms라고 생각합니다. –

답변

1

그냥 초기화 :이 Comparator를 취하는 슈퍼 생성자 extends BinaryHeap<Bid>. 그래서 Comparator으로 super 생성자를 호출 할 수 없습니다. 이유는 실제 클래스 Bid 대신 일반 유형 Bidclass MaxHeap<Bid>에 사용됩니다.

+0

감사하지만 작동하지 않습니다. 다시 게시 할 것입니다. –

+0

@BenjaminLindqvist는 "작동하지 않습니다"는 너무 큰 이유입니다. 정확히 무엇에 대해 불평합니까? –

+0

원래 게시물을 편집했습니다. –

관련 문제