java - 使用泛型在 Java 中实现 B 树

标签 java generics b-tree

我用 java 编写了自己的 2-3-4 树。目前,我的代码如下所示:

public class tree234{  
    private class node{  
        Comparable data[]=new Comparable[3];  
        node next[]=new node[4];  
    }   
}

相反,我想要这样的东西:

public class tree234<T extends Comparable<? super T>>{  
    private class node{  
        T[] data=new T[3];//error here!  
        node[] next=new node[4];  
    }  
}

虽然我知道我无法创建数组(并且有点理解为什么),但我想不出一个相当简单的方法来使用泛型实现节点类。有什么建议吗?

最佳答案

您始终可以进行显式转换...

由于 T 扩展了 Comparable,变量 T[] 将在编译后的类中作为 Comparable[] 结束。所以数组类型必须是 Comparable[] - 您不能将 Object 对象分配给 Comparable 变量,.

另一种数组类型是Tree234.Node[]

public class Tree234<T extends Comparable<? super T>>{  
    private class Node{  
        T[] data=(T[]) new Comparable[3];  // need to be a comparable, as the superclass is known.
        Node[] next = (Node[]) new Tree234.Node[4];  

    }  
}

关于java - 使用泛型在 Java 中实现 B 树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6890580/

相关文章:

java - 为什么这个循环会循环代码但没有执行正确的操作?

java - Guava getIfPresent() 返回错误

java - 双倍流

b-tree - 平衡 B 树如何平衡

php - 遍历B树结构算法

java - 传递子类进行实例化

java - 在带有泛型参数的泛型方法中使用 Spring RestTemplate

Java 泛型 - 删除机制

swift - 在 Swift 3 中使用泛型参数调用闭包时发生奇怪的崩溃

c# - 基于文件系统的B+树在c#中的实现