8

メソッドでは、ジェネリックobject E extends Comparable<E>を引数として受け取ります。ここで、2 つの優先キューを作成したいと考えています。1 つはcomparatorE によって使用されるキューを使用し、もう 1 つは E によって使用されるのとは反対のキューを使用しますcomparator(つまり、E が '<' を使用する場合、2 番目のキューは '>=' を使用する必要があります)。そのようなキューを 2 つ作成する方法を教えてください。

queue2=new PriorityQueue<E>(0,Collections.reverseOrder(e));

該当しないエラーが発生していますreverseOrder

助けてください

4

4 に答える 4

12

Collections.reverseOrderを見てください。

于 2012-09-10T04:48:15.003 に答える
5

オブジェクトEは拡張されますがjava.lang.Comparable,、 ではありませんjava.util.Comparator

compareToComparator を使用して最初のキューを作成すると、関数で順序付けが行われます。次にjava.util.Comparator、逆に比較を行う a.compareTo(b) を呼び出して結果を否定する a.compareTo(b) を作成し、それを使用して 2 番目のキューを作成します。コンパレータ。

于 2012-09-10T05:26:16.490 に答える
1

Collections.reverseOrderの 1 つの引数はComparator であり、Collection ではありません。あなたのコードでは、引数なしで単に reverseOrder を使用してください。ゼロ以外の初期サイズも使用する必要があります。次のコードが機能します。

queue2=new PriorityQueue<E>(1, Collections.reverseOrder());
于 2013-07-26T10:43:53.730 に答える