3

私はJavaが初めてです。誰でも次のクラス宣言の意味を教えてもらえますか

public class ListNode<K extends Comparable<K>, V> {
    K key;
    V value;
    ListNode<K, V> next;
    ListNode(K key, V value,ListNode<K,V> next) {
        this.key = key;
        this.value = value;
        this.next = next;
    }
}
4

5 に答える 5

1

新しい の構築を可能にするクラスがありますListNode。を構築するたびに、必要なタイプListNodeを示す必要があります。タイプの一部は、インターフェイスを実装する別のクラスであり、他のクラスは何でもかまいません。ListNodeComparable

ListNode<Date, String> node = new ListNode<>();

は一例です。

このような例では、次のListNodeようになります。

public class ListNode {
    Date key;
    String value;
    ListNode<Date, String> next;
    ListNode(Date key, String value, ListNode<Date,String> next) {
        this.key = key;
        this.value = value;
        this.next = next;
    }
}

<との間のものはジェネリック型であり、 「Java Generics」>としてよく知られている Java の機能です。あなたはそれを読んでください。1 回の投稿で完全な説明を行う範囲をわずかに超えていますが、上記の例からアイデアが得られることを願っています。これにより、一般的に疑似型引数を取るクラスを書くことができます。

同等のインターフェースは、ある種の線形順序付けを提供する特別なインターフェースです。たとえば、文字列をアルファベット順に並べ替えることができます。この場合、次のようになります。

public StringComparator implements Comparable<String> ....

Comparableメソッドの実装を強制的に定義するキーワードによって機能します。

public int compareTo(String other) {
  ...
}

返された整数が負の場合、もう一方がこのアイテムの前に来ます。戻り値が正の場合、もう一方がこのアイテムの後に来ます。戻り値がゼロの場合、2 つのアイテムは (順序付けのために) 同等です。

于 2013-10-04T05:23:30.967 に答える
0

インターフェイスを実装するすべてのクラスComparableは、そのクラスのオブジェクトを相互に比較でき、その比較をツリー (TreeSet) の作成などの多くのユーティリティで使用できることを意味します。
あなたの場合:

ListNode<K extends Comparable<K>, V>

KNumber そのサブクラスやカスタム クラスなど、同等のものを実装するものであれば何でもかまいません。

あなた:オブジェクトが比較できるクラスに何を比較しますか。

compareTo(T t)回答:int . _

于 2013-10-04T05:29:55.267 に答える
0

Java の Generics について聞いたことがあるはずです。そうでない場合は、このhttp://docs.oracle.com/javase/tutorial/extra/generics/index.htmlをご覧ください。答えはすぐそこにあります。

于 2013-10-04T05:30:24.673 に答える
0

このステートメントpublic class ListNode<K extends Comparable<K>, V>は、

  • ListNodeComparableジェネリック型を実装するキーを持つパラメーター化されたクラスです。
  • Vキーの値です
于 2013-10-04T05:23:32.293 に答える