用红黑树存储,要求能保存任意类型的元素。
我是这么做的:结点的KEY域为Object,这样就能存储任意类型的数据。一开始时就记住元素的类型,当要用到结点的值时(比如插入时比较元素的大小)强制转换为原来的类型。但有个问题,程序必须事先知道元素所有可能的类型,并在代码中写上转换的语句。如果存储的是未知的自定义类型,比如Dog类,这个办法就行不通了。即使Dog里定义了比较函数,但由于程序不知道KEY是Dog类型的,也无法比较大小。
请教各位大大有什么好的方法能让红黑树存储任意类型的数据,包括自定义类型,让它能成功插入和删除数据?
我是这么做的:结点的KEY域为Object,这样就能存储任意类型的数据。一开始时就记住元素的类型,当要用到结点的值时(比如插入时比较元素的大小)强制转换为原来的类型。但有个问题,程序必须事先知道元素所有可能的类型,并在代码中写上转换的语句。如果存储的是未知的自定义类型,比如Dog类,这个办法就行不通了。即使Dog里定义了比较函数,但由于程序不知道KEY是Dog类型的,也无法比较大小。
请教各位大大有什么好的方法能让红黑树存储任意类型的数据,包括自定义类型,让它能成功插入和删除数据?
treeMap就是一个红黑树的实现
import java.util.TreeMap;public class Test7 { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
TreeMap tree = new TreeMap();
tree.put(1, new String("abc"));
tree.put(2, new Integer(12));
tree.put(3, new Dog("旺财", "red"));
tree.put(4, new Integer(2));
System.out.println(tree);
}}class Dog {
private String name;
private String color; public Dog(String name, String color) {
this.color = color;
this.name = name;
} @Override
public String toString() {
// TODO Auto-generated method stub
return "name:" + name + "|color:" + color;
}}