这里泛型 E 使用的compareTo() 具体的是怎么比较的?

来源:6-4 改进添加操作:深入理解递归终止条件

CarlosLiu

2018-11-09

波波老师,这里添加操作中进行两个节点的比较,我们知道,对于自定义的对象,需要实现 Comparable 接口,并自定义实现 compareTo()方法, 但是这里并没有在E 这个泛型的类中重写Comparable 中的compareTo() 方法,因此这里的compareTo() 是根据什么进行比较的呢?我如果可以通过源码看的到具体比较的方法?谢谢!

写回答

1回答

liuyubobobo

2018-11-09

由于我们进行了泛型限制:

public class BST<E extends Comparable<E>>


所以,我们知道,存储在这个BST中的类型E,一定实现了Comparable接口。所以我们可以放心的调用comareTo。具体它是怎么实现的,BST不管!传来的是Integer,用的就是Integer的compareTo;传来的是String,用的就是String的compareTo。如果传来Student,这个Student必须实现了Comparable接口,也就是必须自定义了compareTo,用的就是自定义的那个compareTo:)

0
1
CarlosLiu
明白了,就是储存在BST 中的对象的类一定是要实现Comparable 且实现compareTo() 方法的。
2018-11-09
共1条回复

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程