gpt4 book ai didi

java - 如何迭代 Map.Entry 的 SortedSet

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

我正在研究一个数据结构 asgn。其中,我们需要创建一个 Word 对象的 HashMap(Word 是一个自定义类)。其中键是字符串,值是自定义 Word 对象。我需要从 HashMap 创建一个 treeMap,它将根据我创建的自定义 Word 比较器对 Word 对象进行排序。到目前为止,我已经能够通过创建以下方法对 HashMap 进行排序,该方法返回 Map.Entry 的 SortedSet:

public static SortedSet<Map.Entry<String , Word>> entriesSortedByValues
(Map<String , Word> map , Comparator<Word> comp){
SortedSet<Map.Entry<String , Word>> sortedEntries = new
TreeSet<Map.Entry<String , Word>>(
new Comparator<Map.Entry<String , Word>>()
{
public int compare(Map.Entry<String , Word> e1, Map.Entry<String , Word> e2)
{
int c = comp.compare(e1.getValue() , e2.getValue());
return c;
}
});
sortedEntries.addAll(map.entrySet());
return sortedEntries;
}

这工作得很好,并返回适当排序的集合。不过我现在想迭代它来打印 Word 对象。就像这样:

SortedSet t_set1 = entriesSortedByValues(h_Map , Word.alpha);

// this works^^ (returns correctly ordered set of Map.Entry<String , Word>)

for (Map.Entry<String , Word> entry : t_set_1)
{
System.out.println(///WORD OBJECT)
}

我尝试在它上面运行 for 循环,为每个循环,并创建一个迭代器。我不断收到不兼容类型错误,或者条目有私有(private)访问错误。这可能是一个简单的修复,但我一直在尝试一切让它工作。请帮助:(

最佳答案

您需要添加 SortedSet 的泛型类型变量:

SortedSet<Map.Entry<String, Word>> t_set1 = entriesSortedByValues(h_Map , Word.alpha);

这是由使用 Type Erasure 实现的泛型引起的保持与 Java 1.4 的向后兼容性。通过不添加泛型类型,您将有效地创建 SortedSet<Object> .

关于java - 如何迭代 Map.Entry 的 SortedSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43357627/

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