【发布时间】:2013-11-08 12:19:18
【问题描述】:
我将 arrayList 作为键存储在 TreeMap 中,但出现此异常
java.lang.ClassCastException:java.util.ArrayList 无法转换为 java.lang.Comparable
我将数组的内容复制到 ArrayList 并尝试将该数组列表作为我的键存储在 Map 我的代码是:
TreeMap< ArrayList<Integer> , Integer > bandsMap = new TreeMap< ArrayList<Integer> , Integer >();
ArrayList< Integer > erfcn = new ArrayList< Integer >();
for (int index = 0; index < frequencies.length; index++)
erfcn.add(frequencies[index]);
bandsMap.put( erfcn , band_number);
for (Integer value : bandsMap.values()) {
System.out.println("Value = " + value + "\n");
}
有什么想法吗? 谢谢
【问题讨论】:
-
java.util.ArrayList cannot be cast to java.lang.Comparable。List没有扩展Comparable,则没有通过compareTo(T o)方法定义比较操作。您不能用作地图键。 -
TreeMap在添加之前比较键。你认为它将如何比较ArrayList的两个实例?确定一个列表更小/更大/等于另一个列表的标准是什么? -
你要建楼吗?
-
您真的需要
List<Integer>来获取密钥吗?你能想到一个可能的解决方法吗? -
Multimap 存储值的集合。密钥集合不是一件正常的事情——你真的应该重新考虑你的设计。
标签: java map arraylist treemap