gpt4 book ai didi

java - 同一映射的自定义哈希码和比较器?

转载 作者:行者123 更新时间:2023-12-02 12:02:09 25 4
gpt4 key购买 nike

我需要实现一个 Map,它必须具有自定义哈希(返回整数年份 + 汽车型号),并且还必须按降序排序。如果我使用 TreeMap,我无法创建自定义哈希,如果我使用 HashMap,我无法对其进行排序。我怎样才能同时使用两者?我尝试使用自定义比较器来降序制作 TreeMap,但它忽略了我对 hashCode 的覆盖,并添加了应该位于同一位置不同位置的元素,即使它们的 hashcode 不同。我该如何解决这个问题?

class MyComparator implements Comparator<Integer> {
public int compare(Integer a, Integer b) {
if (a < b) {
return 1;
}
return 0;
}
}

最佳答案

TreeMap 使用其 compareTo 方法(如果元素可比较)或给定的比较器对元素进行排序。它们根本不使用 hashCode(),因此您可以拥有任何您想要的实现。

您的问题可能出在比较器本身上。您可能会遇到这样的情况:两个相等的元素具有相同的 hashCode,但比较器不会为它们返回 0。因此,您希望 TreeSet 仅包含这些元素之一,但它并不认为它们彼此相等。

关于java - 同一映射的自定义哈希码和比较器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47168025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com