如何将 compareTo 用于泛型。 (<E>, <Integer>...)

How to use compareTo for generics. (<E>, <Integer>...)

我需要在教授给出的程序中使用 compareTo()。 但是那个程序包括泛型。该功能存在问题。所以我的问题是如何实现它。

if(node1.getElement().compareTo(node2.getElement()) < 0)

我需要一些解释 java.util.Iterator; 因为我需要在主 class 中使用 iteration()。 我是 java 的新手。可以自由地向新手解释。 Tnx 伙计们

这是完整的代码 :D https://pastebin.com/mA9igb1t

首先:在您的 main 方法中,您不能使用通用 E。在您的情况下,您必须使用正确的类型 Integer

比较器问题有两种解决方案:

  1. 如果您确定 E 将始终是原始类型的包装器 (如 Byte、Short、Integer、Long、Float 或 Double)你可以声明 SLL 作为
    class SLL<E extends Number & Comparable> implements Iterable<E>
    那么你的 if 就可以了。
    SLL 不必实施 Comparable
  2. 否则,您可以在 if
    中使用 BigDecimal BigDecimal node1Value = new BigDecimal(node1.getElement().toString());
    BigDecimal node2Value = new BigDecimal(node2.getElement().toString()); if(node1Value.compareTo(node2Value) < 0)

关于迭代器问题,由于您必须在 SLL 对象上调用 .iterator(),因此 class 必须实现 Iterable.
您可以在 The Java Tutorials - The Collection Interface.
上阅读有关迭代器的信息 我还建议看一下 LinkedList

的源代码