java - Java Bound 不匹配错误,但我扩展了 Comparable 接口
问题描述
我正在尝试实现一个以堆为节点的二叉树。但我无法弄清楚为什么会出现这个错误。
首先,这些是类:
二叉树:
public class MyBinarySearchTree<E extends Comparable<E>> implements Serializable{...}
堆:
public class MyHeap<E extends Comparable<E>> implements Comparable<E>{...}
价值出现:
public class ValueOccurance<E extends Comparable<E>> implements Comparable<E> {
private E data;
private int occur;
@Override
public int compareTo(E o) {
return data.compareTo(o);
}
}
所以,问题来了:主要是我不能创建 x 和 y。
MyHeap<ValueOccurance<Integer>> x = new MyHeap<>();
MyBinarySearchTree<ValueOccurance<Integer>> y = new MyBinarySearchTree<>();
你能告诉我我的错在哪里吗?
问候。
解决方案
MyHeap
并且ValueOccurence
需要与自身的实例相比较,而不是E
.
请注意以下内容与您的代码之间的差异(在下面突出显示):
public static class MyBinarySearchTree<E extends Comparable<E>> implements Serializable{ };
public static class MyHeap<E extends Comparable<E>> implements Comparable<MyHeap<E>>{
^^^^^^^^^
public int compareTo(MyHeap<E> other) {
return 0;
}
}
public class ValueOccurance<E extends Comparable<E>> implements Comparable<ValueOccurance<E>> {
^^^^^^^^^^^^^^^^^
private E data;
private int occur;
@Override
public int compareTo(ValueOccurance<E> o) {
^^^^^^^^^^^^^^^^^^^
return data.compareTo(o.data);
^^^^^^
}
}
public static void main(String[] args) throws IOException
{
MyHeap<ValueOccurance<Integer>> x = new MyHeap<>();
MyBinarySearchTree<ValueOccurance<Integer>> y = new MyBinarySearchTree<>();
}
推荐阅读
- csv - 如何在直线 HDP 中使用双引号将配置单元数据导出为 csv 格式
- r - 为 gganimate 设置较慢的帧速率或较长的持续时间
- c++ - 为什么在执行 main() 之前堆栈流
- python - 理解 Python 中的 for 循环
- php - 如何使用 updateOrCreate 函数将数据从一个 json 文件插入到 laravel 中具有相关数据的多个表中?
- scala - 从资源目录读取文件的scala问题
- sql - 从包含来自单独列的数据的列中选择数据
- dialogflow-es - 如何在 DialogFlow 中动态更改意图顺序
- python - 构建 Python 3.7.1 - SSL 模块失败
- java - 不允许超过最大和相同注册数量的参与者的方法