Java 如何遍历Map.Entry的分类数据集

Java 如何遍历Map.Entry的分类数据集,java,loops,set,treeset,Java,Loops,Set,Treeset,我正在处理一个数据结构asgn。在其中,我们需要创建word对象的HashMap(word是一个自定义类)。其中键是字符串,值是自定义Word对象。根据HashMap,我需要创建一个树映射,它将根据我创建的自定义单词比较器对单词对象进行排序。到目前为止,我已经能够通过创建以下方法对HashMap进行排序,该方法返回Map.Entry的SortedSet: public static SortedSet<Map.Entry<String , Word>> entriesSo

我正在处理一个数据结构asgn。在其中,我们需要创建word对象的HashMap(word是一个自定义类)。其中键是字符串,值是自定义Word对象。根据HashMap,我需要创建一个树映射,它将根据我创建的自定义单词比较器对单词对象进行排序。到目前为止,我已经能够通过创建以下方法对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;
}
公共静态排序集entriessortedbyvalue
(地图、比较器组件){
SortedSet sortedEntries=新
树集(
新比较器()
{
公共整数比较(Map.Entry e1,Map.Entry e2)
{
int c=comp.compare(e1.getValue(),e2.getValue());
返回c;
}
});
sortedEntries.addAll(map.entrySet());
归还假牙;
}
这可以很好地工作,并返回正确排序的集合。但是,我现在想迭代它来打印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)
}
SortedSet t_set1=entriesSortedByValues(h_Map,Word.alpha);
//此操作^^(返回正确排序的Map.Entry集)
用于(Map.Entry:t_set_1)
{
System.out.println(///WORD对象)
}

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

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

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

这是由于使用实现泛型以保持与Java 1.4的向后兼容性。如果不添加泛型类型,则实际上是在创建
SortedSet

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

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

这是由使用实现泛型以保持与Java 1.4的向后兼容性引起的。如果不添加泛型类型,则实际上是在创建
SortedSet

您遇到的问题是什么?您必须将排序集定义为
SortedSet t_set1
。然后,您已经使用
进行了正确的迭代>for(Map.Entry:t_set_1)
。然后,在for循环中执行:
System.out.println(Entry.getValue());
您遇到的问题是什么您必须将排序集定义为
SortedSet t_set1
。然后,您已经使用
for(Map.Entry:t_set_1)进行了正确的迭代
。然后,在for循环内部执行:
System.out.println(entry.getValue());