treemap排序 根据hashcode
时间: 2023-07-20 20:31:01 浏览: 90
在 TreeMap 中,排序是根据键值进行的,而不是根据哈希码进行的。如果要根据哈希码进行排序,您需要实现一个自定义的比较器,并将其传递给 TreeMap 的构造函数。
下面是一个示例代码,演示如何根据哈希码对 TreeMap 进行排序:
```
import java.util.Comparator;
import java.util.Map;
import java.util.TreeMap;
public class Main {
public static void main(String[] args) {
Comparator<Integer> hashComparator = new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return Integer.compare(o1.hashCode(), o2.hashCode());
}
};
Map<Integer, String> map = new TreeMap<>(hashComparator);
map.put(1, "one");
map.put(2, "two");
map.put(3, "three");
map.put(4, "four");
map.put(5, "five");
for (Map.Entry<Integer, String> entry : map.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
}
```
在这个示例中,我们创建了一个自定义的比较器 hashComparator,它将比较两个 Integer 对象的哈希码。然后,我们将这个比较器传递给 TreeMap 的构造函数,以便 TreeMap 根据哈希码进行排序。
输出结果:
```
5: five
1: one
4: four
2: two
3: three
```
可以看到,TreeMap 根据键的哈希码进行了排序。
阅读全文