【发布时间】:2012-11-13 05:43:38
【问题描述】:
所以我一直在尝试做的是使用我以前拥有的 TreeMap 并将其应用于此方法,在该方法中我将其转换为一个集合并让它通过 Map Entry Loop。我想做的是将我以前的 TreeMap 反转为相反的(翻转的)TreeMap
'当我运行我的代码时,它给了我一个类似的错误。这是否意味着我必须实施类似的方法?我将 arrayList 转换为 Integer,所以我认为类似的方法会支持它。还是我的代码有问题
错误:线程“main”中的异常 java.lang.ClassCastException:java.util.ArrayList 无法转换为 java.lang.Comparable
概述:最初,我对该程序的预期目的是制作一个从文本文档中读取并专门找到所有单词以及单词所在位置的索引/行的 Treemap。现在我想制作一个包含最常用词的“前十名”列表。我想“翻转”我的树形图,以便将整数值按顺序排列,然后字符串将跟随
public static void getTopTenWords(TreeMap<String, ArrayList<Integer>> map) {
Set<Map.Entry<String, ArrayList<Integer>>> set = map.entrySet();
TreeMap<Integer, String> temp = new TreeMap<Integer, String>();
int count = 1;
for(Map.Entry<String, ArrayList<Integer>> entry : set){
if(temp.containsKey(entry.getValue())) {
Integer val = entry.getValue().get(count);
val++;
temp.put(val, entry.getKey());
}
else {
temp.put(entry.getValue().get(count), entry.getKey());
}
count++;
}
}
【问题讨论】:
-
你的key是
String类型,你的value是ArrayList类型。你正在做temp.containsKey(entry.getValue()),它永远是false。您的临时地图声明说密钥应该是Integer类型。你的代码很混乱。您的陈述不够清楚,无法解释您到底想要达到什么目的。举例说明。 -
我无法真正理解您方法的目的。你想翻转你的
TreeMap,没问题。我不能阻止你这样做。但为了什么目的?你原来的TreeMap包含什么,以及你想从新的TreeMap中实现什么。如果可能,请举例说明清楚。 -
抱歉,我提交时遗漏了一部分问题。不过我现在编辑了它
-
@James.. 您是否尝试创建
TreeMap<List<Integer>, String>?如果是,那么请注意,您不能将可变对象作为Map中的键。其次,TreeMap中的键应该是Comparable。 --- 请告诉我们您的 : -TreeMap<String, ArrayList<Integer>> map包含什么?
标签: java dictionary treemap