0

私は次のクラスを持っていますKeyObj

public class KeyObject {
    private byte[] P1;
    private byte[] P2;
    private byte[] P3;
}

このクラスのオブジェクトを入れたいのですConcurrentSkipListMapが、範囲クエリが可能になるようにコンパレータを書く方法がわかりません。つまり、P1が与えられた場合、 me が返されますp2 and p3。以下のようなもの

KeyObject fromKey = new KeyObject(K1.P1, P2_MIN_VALUE, P3_MIN_VALUE);
KeyObject toKey = new KeyObject(K2.P1, P2_MAX_VALUE, P3_MAX_VALUE);
ConcurrentNavigableMap<KeyObject, Object> subview = table.submap(fromkey, toKey);
for (ConcurrentSkipListMap.Entry<KeyObject, Object> entry : subView.entrySet()) {
...
}

また

KeyObject fromKey = new KeyObject(K1.P1, K1.P2, P3_MIN_VALUE);
KeyObject toKey = new KeyObject(K2.P2, K2.P2, P3_MAX_VALUE);
ConcurrentNavigableMap<KeyObject, Object> subview = table.submap(fromkey, toKey);
for (ConcurrentSkipListMap.Entry<KeyObject, Object> entry : subView.entrySet()) {
...
}
4

1 に答える 1

0

比較可能なインターフェースまたはコンパレーターインターフェースを使用し、メソッドのcomparetoまたはcompareを、それらが動作するように定義します。

アジェイ

于 2013-03-25T08:38:20.430 に答える