Vic*_*Vic 3 java arrays dictionary
我有一个HashMap<Float[], Integer>,我可能需要将其转换为TreeMap.如何对TreeMap的键(即数组)进行排序?他们的第一个元素?
我打算运行一个简单的测试,但它以某种方式导致错误:
public class treeMapTest {
public static void main(String[] args) {
Integer arr1[] = {9, 0, 3};
Integer arr2[] = {2, 2, 2};
Integer arr3[] = {4, 2, 1};
TreeMap<Integer[], Integer> tm = new TreeMap<Integer[], Integer>();
tm.put(arr1, 7);
tm.put(arr2, 7);
tm.put(arr3, 7);
System.out.println(tm);
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
数组没有自然排序(即它们不实现Comparable接口),这就是为什么在TreeMap使用无参数构造函数实例化时代码会引发异常的原因.
您必须提供Comparator<Integer[]>的TreeMap,以定义自己的排序构造.
BTW,使用数组作为一个键HashMap是一个坏主意(因为数组不覆盖的默认实现equals()和hashCode()),所以这是你切换到一个好东西TreeMap.
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |