我需要使用String []键值在地图内创建String,Float的映射。 这是我实现它的方法:
import java.util.*;
public class Test {
static TreeMap<String,Float> map1;
static TreeMap<String[],TreeMap<String,Float>> map2;
public static void main (String[] args){
map1 = new TreeMap<String,Float>();
map2 = new TreeMap<String[],TreeMap<String,Float>>();
map1.put("key",1.0f);
map2.put(new String[]{"String1","String2"},map1);
System.out.println(map2);
}
}
它编译没有任何麻烦。 但是在启动这个程序之后我得到了ClassCastException:
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.String; can
not be cast to java.lang.Comparable
at java.util.TreeMap.compare(TreeMap.java:1290)
at java.util.TreeMap.put(TreeMap.java:538)
at Test.main(Test.java:9)
请你解释一下我的错误在哪里以及如何解决?
答案 0 :(得分:2)
构建TreeMap
实例而不将Comparator
实例传递给构造函数时,地图的键必须实现Comparable
。由于数组不会实现Comparable
,因此您无法将此构造函数用于TreeMap
,而密钥是数组。您必须将Comparator<String[]>
传递给TreeMap
。
Comparator<String[]> comparator = ...
map2 = new TreeMap<String[],TreeMap<String,Float>>(comparator);