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

有一个类,它允许构造 new ListNodes。每次构造 aListNode时都需要指明所需的类型,其中类型的ListNode一部分是实现Comparable接口的不同类,而另一个类可以是任何东西。

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 的一个特性,更广为人知的是“Java 泛型”。你应该阅读它。它稍微超出了一篇文章中完整解释的范围,但希望上面的例子能给你一个想法。它允许人们编写一个通常采用伪类型参数的类。

可比较接口是一种特殊接口,它提供某种类型的线性排序。例如,您可以按字母顺序对字符串进行排序,在这种情况下,您会得到如下所示的内容

public StringComparator implements Comparable<String> ....

它通过Comparable关键字强制定义方法的实现来工作。

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

如果返回的整数是负数,则另一个在该项之前,如果返回值为正,则另一个在该项之后,如果返回值为零,则这两项(出于排序目的)等价。

于 2013-10-04T05:23:30.967 回答
0

每个实现Comparable接口的类都意味着该类的对象可以相互比较,并且可以在许多实用程序中使用该比较,例如制作树(TreeSet)。
在你的情况下:

ListNode<K extends Comparable<K>, V>

K可以是实现类似的任何东西,例如 Number its Subclasses 或您的自定义类。

你:可比较的类对它的对象可以比较的类做了什么。

Ans:它有一个compareTo(T t)方法,你可以写出你想如何告诉一个对象大于或等于或小于通过返回一个比较对象来比较对象int

于 2013-10-04T05:29:55.267 回答
0

您一定听说过 java 中的泛型。如果没有,你可以看看这个http://docs.oracle.com/javase/tutorial/extra/generics/index.html。答案就在那里。

于 2013-10-04T05:30:24.673 回答
0

这个“类”定义是特殊的,只是因为它使用“通用”类型参数?如果你不知道“通用”是什么意思,我认为你应该在读/写这样的 java 代码之前阅读一本 java 书~

class ListNode<K, V>表示ListNode该类使用两个“未知”或“通用”变量类型(即KV),您可以在使用该类时指明具体类型

K extends Comparable<K>意味着'K'类型被限制为'Comparable'

于 2013-10-04T05:31:58.110 回答
0

该声明public class ListNode<K extends Comparable<K>, V>的意思是

  • ListNode是一个带有Comparable为泛型类型实现的键的参数化类。
  • V是键的值
于 2013-10-04T05:23:32.293 回答