5

Comparable インターフェイスを実装するクラスがあります。このクラスでは、オブジェクトをLong値でソートするために、compareTo メソッドをオーバーライドする必要があります。

私が知らないのは、Long 型の比較です。値が別の Long 値より大きいか小さいかを確認しようとすると、エラーが発生します。Long が long のオブジェクトであることは知っていますが、2 つの Long を比較する方法がわかりません。

コードサンプル:

public int compareTo(MyEntry<K, V> object) {
    if (this.value < object.value)
        return -1;
    if (this.value.equals(object.value))
        return 0;

    return 1;
}

エラーメッセージ:

           operator < cannot be applied to V,V
if (this.value < object.value)
                       ^

V、Vはロング、ロング

4

6 に答える 6

9

あなたの問題は、MyEntry<K, V>比較しようとしているオブジェクトのタイプをコンパイラに伝えないことです。Long 値を比較していることはわかりません。これを行う最善の方法は、比較するオブジェクトのタイプを気にしないことです (オブジェクトが Comparable を実装していると仮定します)。

return this.value.compareTo(object.value);

ただし、何らかの理由で手動で行いたい場合は、次のようにします。

public int compareTo(MyEntry<K, V> object) {
    if ((Long) this.value < (Long) object.value)
        return -1;
    if (this.value.equals(object.value))
        return 0;

    return 1;
}
于 2013-10-10T16:52:34.017 に答える
8
Long l1 = new Long(3);
Long l2 = new Long(2);

return l1.compareTo(l2);

簡単ないいえ?

于 2013-10-10T16:48:38.533 に答える
2

次のようになります。

@Override
public int compareTo(MyEntry<K, V> object) {
        if (object == null) {
            throw new NullPointerException("Null parameter");
        } else if (!this.getClass().equals(object.getClass())) {
            throw new ClassCastException("Possible ClassLoader issue.");
        } else {
            return this.longValue.compareTo(object.longValue);
        }

}

偶然にも、私たちは最近、Java での比較に関するチュートリアルを行いました。多分それはあなたを助けることができます。

于 2013-10-10T16:55:56.043 に答える
0

long 値の比較には longValue() メソッドを使用します。

例えば:-

Long id1 = obj.getId();
Long id2 = obj1.getId();

if (id1.longValue() <= id2.longValue()) {
Sysout.......
}

assertTrue(id1.longValue() == id2.longValue())
于 2013-10-10T16:48:28.627 に答える
-1

長いcompareToコマンドが役立つ場合があります。compareTo メソッドは整数値を返し、long が互いに等しいか、より大きいか、または小さいかについての答えを提供します。

Long l1 = new Long(63255);
 Long l2 = new Long(71678);
 int returnVal =  l1.compareTo(l2);

 if(returnVal > 0) {
    System.out.println("l1 is greater than l2");
 }
 else if(returnVal < 0) {
    System.out.println("l1 is less than l2");
 }
 else {
    System.out.println("l1 is equal to l2");
 }
于 2013-10-10T16:52:26.367 に答える