【发布时间】:2015-05-09 12:08:59
【问题描述】:
我有一个 Zeitpunkt 类,它实现了一个带时间的日期,另外还有一个表示二叉搜索树的类 Suchbaum。
我想在 Suchbaum 中使用 Comparator-Object 按 Zeitpunkt 的日期对树进行排序,但是当我想创建一个suchbaum 对象时,它会打印出命名错误。
Zeipunkt
public class Zeitpunkt<T> implements Comparable<T>
{
private int jahr;
private int monat;
private int tag;
private int stunden;
private int minuten;
private double sekunden;
public int vergleich(Zeitpunkt a) { ... }
@Override
public int compareTo(T o) {
if(o instanceof Zeitpunkt)
return vergleich((Zeitpunkt)o);
return 0;
}
...
}
苏克鲍姆
public class Suchbaum<T extends Comparable<T>> {
private class Element {
private T daten;
private Element links;
private Element rechts;
public Element(T t) {
daten = t;
links = null;
rechts = null;
}
}
private Element wurzel;
private Comparator<T> comp;
...
}
测试类
public class BaumTest {
public static void main(String[] args) {
// error in the following line (IntelliJ underlines the first
// "Zeitpunkt"). Suchbaum<Zeitpunkt<?>> = ... doesn't work either..
// *Completely confused*
Suchbaum<Zeitpunkt> sb = new Suchbaum<>((Zeitpunkt z1, Zeitpunkt z2) -> {
if(z1.getTag() > z2.getTag())
return 1;
else if(z1.getTag() == z2.getTag())
return 0;
else
return -1;
});
}
}
有什么想法吗? (这个主题的其他线程没有帮助我)
【问题讨论】:
-
尝试在代码中使用英文名称;这是一个普遍的好习惯,因为它可以让更多人帮助和/或理解您的代码。
标签: java generics comparator comparable