1
私はJava APIを使用してプライオリティキューを作成しましたが、の最後にプライオリティキューから特定の要素を削除します。私はそれがコンパレータと何かをしなければならないことを知っているが、私はそれを把握することはできません。助けてもらえますか?ここに私のコードです:優先度キューから特定の要素を削除するにはどうすればよいですか?
public static void main(String[] args)
{
PriorityQueue<Element> X = new PriorityQueue<Element>(100, new ElementComparator());
X.add(new Element(30, 3));
X.add(new Element(700, 4.5));
X.add(new Element(100, 6.2));
X.add(new Element(2, 8.1));
System.out.println(X.remove(new Element(100, 6.2)));
}
とここに私の要素のクラスです:
private int index;
private double value;
public Element(int i, double v)
{
index = i;
value = v;
}
public int getIndex() { return index;};
public double getValue() { return value;};
public void setValue(double v) { value = v;};
そして、ここで私が作成したコンパレータです:...私はあなたの助けに感謝
public int compare(Element o1, Element o2)
{
int idx1 = o1.getIndex();
int idx2 = o2.getIndex();
if (idx1 < idx2) {
return -1;
} else if (idx1 > idx2) {
return 1;
} else {
return 0;
}
}
public boolean equals(Element o1, Element o2)
{
return o1.getIndex() == o2.getIndex();
}
'System.out.println(X.remove(new Element(100、6.2)));'要素が実際に 'X'から削除された場合に出力されます。または 'X'を印刷しようとしていますか? – amit
'compareTo'関数はソート用です。 'remove'には等価メソッドが必要です。このメソッドの正しい署名については、以下の@johncarlの答えを参照してください。 – Perception
また、小文字で始まる名前で非定数変数に名前を付けるのがよい方法です。 – amit