gpt4 book ai didi

java - 将 List> 转换为 TreeSet> 时出现 ClassCastException

转载 作者:行者123 更新时间:2023-12-02 18:32:26 24 4
gpt4 key购买 nike

我似乎无法弄清楚为什么我用以下代码得到这个 ClassCastException:

public static void main(String[] args) {        

Map<String,Double> test0 = new TreeMap<String,Double>();
test0.put("test", 1.);
List<Map<String,Double>> test1 = Arrays.asList( test0 );

Set<Map<String,Double> test2 = new TreeSet<Map<String,Double>>( test1 )
}

因此,我尝试迭代 test1 并将映射单独放入 test2 中,如下所示:

public static void main(String[] args) {        

Map<String,Double> test0 = new TreeMap<String,Double>();
test0.put("test", 1.);
List<Map<String,Double>> test1 = Arrays.asList( test0 );
Set<Map<String,Double>> test2 = new TreeSet<Map<String,Double>>();

for (Map<String,Double> mp : test1)
test2.add(mp);
}

两者都给出了涉及 Comparable 的相同异常:

    Exception in thread "main" java.lang.ClassCastException: java.util.TreeMap cannot be cast to java.lang.Comparable
at java.util.TreeMap.compare(TreeMap.java:1188)
at java.util.TreeMap.put(TreeMap.java:531)
at java.util.TreeSet.add(TreeSet.java:255)
at Delete.main(Delete.java:20)

如果您能深入了解为什么会发生这种情况,我们将不胜感激。谢谢!

最佳答案

TreeSet 希望您传入其元素类型的 Comparator,或者为其元素传递 ComparableMap 未实现 Comparable,并且您尚未提供 Comparator

不过,如果您使用 HashSet,它就可以开箱即用,因为 Map 有一个指定的 hashCode() > 实现。

关于java - 将 List<Map<String,Double>> 转换为 TreeSet<Map<String,Double>> 时出现 ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22131931/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com