gpt4 book ai didi

java - 为什么无法将 List> 复制/转换为 SortedMap,Integer>?

转载 作者:行者123 更新时间:2023-12-02 00:07:08 24 4
gpt4 key购买 nike

我想从 List<Set<String>> 复制我的元素进入SortedMap<Set<String>,Integer> ,但我总是得到:

java.lang.ClassCastException: java.util.HashSet cannot be cast to java.lang.Comparable. (or HashMap could be a TreeSet too, vice versa)

我读过的一些地方说这是不可能的,但这是正确的吗?

我不敢相信我无法将原始列表或集合复制到 map 中。

这是我尝试过的:

List<Set<String> > tempnewOut= new ArrayList<>(); 
SortedMap<Set<String>,Integer> freqSetsWithCount= new TreeMap<>();
for (Set<String> set : tempnewOut)
{
freqSetsWithCount.put(set, 0);
}

最佳答案

用作 TreeMap 中的键的类(接口(interface) SortedMap 的实现之一)必须实现接口(interface) Comparable ,或者您必须创建 TreeMap通过提供 Comparator到构造函数。

您正在尝试使用 HashSet<String>对于 key 。 HashSet没有实现Comparable ,并且您没有提供 Comparator ,所以你得到 ClassCastException .

一种解决方案是创建 TreeMap通过传递 Comparator到构造函数。您必须实现 compare Comparator的方法指定集合在 map 中的排序方式。

List<Set<String>> list = new ArrayList<>();

Comparator<Set<String>> comparator = new Comparator<Set<String>>() {
@Override
public int compare(Set<String> o1, Set<String> o2) {
// TODO: Implement your logic to compare the sets
}
};

SortedMap<Set<String>, Integer> set = new TreeMap<>(comparator);

// TODO: Fill the set

关于java - 为什么无法将 List<Set<String>> 复制/转换为 SortedMap<Set<String>,Integer>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13605713/

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