如何将compareTo用于泛型。 (<e>,<integer> ...)

时间:2018-10-27 20:12:57

标签: java generics iterator compareto

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

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

我需要对java.util.Iterator;进行一些解释 因为我需要在主类中使用iteration()。 我是Java新手。有空向新手解释。 Tnx家伙

这是全体员工代码:D https://pastebin.com/mA9igb1t

1 个答案:

答案 0 :(得分:1)

首先:在您的export PATH=$PATH:$(go env GOPATH)/bin 方法中,您不能使用通用的main。您必须使用正确的类型E

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

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

关于迭代器问题,由于必须在if(node1Value.compareTo(node2Value) < 0)对象上调用.iterator(),因此该类必须实现Iterable
您可以在The Java Tutorials - The Collection Interface上了解有关迭代器的信息。
我还建议看一下LinkedList

的源代码