0

以下の例の 4、1、6 行目を見つけるにはどうすればよいですか?
この場合、 Comparator で Collection.sort() を使用することは合理的ですか?

       a -  b - c - d

1.)    6    8   16  18   
2.)    38  40   55  57  
3.)    6    8   25  27  
4.)    1    5   11  15  
5.)    6    8    3   5  
6.)    9   12   19  22   
7.)    18  20    1   3  
8.)    23  25   15  17 

上の例は、オブジェクトが次の基準を満たすリストです:
- すべてのオブジェクトには 4 つの整数 (a、b、c、d) が含まれます。 -
リスト内のすべてのオブジェクトは一意です。
- a < b および c < d。


以下は実際の例ではありませんが、私の考え方では、期待されるオブジェクトを見つけるためにコンパレーターがどのように機能するかを期待できます。

public class Row_Filter implements Comparable<Row_Filter>{
    int a,b,c,d;
    public Row_Filter(int a, int b, int c, int d) {
        this.a = a; this.b = b; this.c = c; this.d = d;
    }
   static class FilterAccordingAB implements Comparator<Row_Filter> {
        public int compare(Row_Filter o1, Row_Filter o2) {
            return o2.a - o1.b+1;
        }
    }
   static class FilterAccordingCD implements Comparator<Row_Filter> {
        public int compare(Row_Filter o1, Row_Filter o2) {
            return o2.c - o1.d+1;
        }
    }
   static class FilterAccordingABCD implements Comparator<Row_Filter> {
        public int compare(Row_Filter o1, Row_Filter o2) {
            FilterAccordingAB abF=null;    FilterAccordingCD cdF=null;
            if((abF.compare(o1, o2)==0) && (cdF.compare(o1, o2)==0)){
                return 1;
            }
            return -1;
        }
    }
} 
4

2 に答える 2

3

Comparatorインターフェイスを実装する必要があります。そのインターフェースの JavaDoc を調べてください。そのインターフェースを実装するクラスを作成する必要があります。これには、1 つのメソッドを記述することが含まれます (equals() を再実装する必要はありません)。

メソッドには 2 つのオブジェクトが渡されます。要件に従って 2 つのオブジェクトが「等しい」ことを示すために、メソッドから返す必要がある値を確認します。次に、要件に応じて、それらが「等しい」場合にその値を返すコードを記述します。

不明な点がある場合は、メソッドの作成、クラスの作成、またはインターフェイスの使用に関する Java の基本的な教科書を参照する必要があります。

于 2010-09-15T20:31:33.300 に答える
0

コンパレータをどこで使用するか混乱しているようです。DJClayworth が作成方法を正確に説明しています。たとえば、並べ替えメカニズムで使用します。

Collections.sort(myList, myComparator);

コレクションをソートするための比較アルゴリズムを定義できるため、これを使用します。これが多少明確になることを願っています。

于 2010-09-15T20:33:33.057 に答える