java - 如何重写compareTo方法?

标签 java comparable

我想重写 compareTo 方法。我用谷歌搜索,但找不到任何有用的东西,因为我的 K 没有具体定义(它不像具有姓名、年龄的 People(类示例))。

我有无法编辑的 Node.java 文件。


public class Node<K extends Comparable<K>, V>
{
    public K key;
    public V value;

    public Node<K, V> parent;
    public Node<K, V> left;
    public Node<K, V> right;

    public Node(K key, V value, Node<K, V> parent, Node<K, V> left, Node<K, V> right)
    {
        this.key = key;
        this.value = value;

        this.parent = parent;
        this.left = left;
        this.right = right;
    }
}

我还有另一个文件 Heap.java

public class Heap<K extends Comparable<K>, V> {...}

我想重写Heap.java中的compareTo方法(在{..}这里!),这样我就可以比较Node的键并对它们进行排序。

最佳答案

而不是覆盖 compareTo ,您可以创建 Comparator<Node>像这样:

Comparator<Node<K extends Comparable<K>>, V> comparator =
        Comparator.comparing(node -> node.key);

您可以在大多数库方法中使用它进行排序,例如,在排序映射的情况下,您可以传递比较器。

但请注意,拥有公钥字段不是一个好主意。它本身就已经够糟糕的了,但如果你用它来存储它就更糟糕了,因为当其他人改变字段时你会弄乱短路。

关于java - 如何重写compareTo方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57344460/

相关文章:

java - 有没有办法在Java中转换一个不占用内存空间的对象?

java - CRUD架构设计-反序列化

android - 如何为 ListView 中显示的元素应用自己的排序逻辑?

java - 修改 DataSet 以接受 Comparable 对象

java - 删除sql数据库中的重复行

java - 如何使用 RESTightLevelCient 执行多个字符串的搜索

java - 使用 JPA 插入具有单列的连续表时出现 SQLGrammarException

java - Java 的泛型是如何工作的?

java - 如何实现键可变的键值对

java - Dijkstra算法中使用的优先级队列的比较器类实现?