其他人说,制作带有数组的二进制搜索树{3,7,1,90,45,67,54,23,...}是很好的.但是TreeSet我的代码会引发异常,我不知道为什么?我的数组列表"array"包含100 objects每个对象都有two fields 1)digit 2)name,我想BST用这些对象的数字字段.请帮助我谢谢.
TreeSet<Element> set = null;
set = new TreeSet<Element>();
for(Element e :array){
set.add(e);
}
Iterator it1 = set.iterator();
while (it1.hasNext()) {
Object o1 = it1.next();
System.out.println(o1);
}
Run Code Online (Sandbox Code Playgroud)
例外:
Exception in thread "main" java.lang.ClassCastException: OBST.Element cannot be cast to java.lang.Comparable
at java.util.TreeMap.put(TreeMap.java:542)
at java.util.TreeSet.add(TreeSet.java:238)
at OBST.GreedyVersion.<init>(GreedyVersion.java:25)
at OBST.GreedyVersion.main(GreedyVersion.java:66)
Run Code Online (Sandbox Code Playgroud)
这是因为线: set.add(e);
这是一个非常糟糕的问题.在你的另一个问题(和这里),你说你有一个{3,7,1,90,45,67,54,23,...}.但是你宣布你的设置TreeSet<Element> set.那你真的有什么?你有一个整数数组吗?或者它是一个数组Elements?
如果它确实是一个元素数组,则错误消息确切地说明了问题所在,您的Element类必须实现 Comparable