繁体   English   中英

如何遍历Map.Entry的SortedSet

[英]How to Iterate through a SortedSet of Map.Entry

我正在研究一个数据结构asgn。 在其中,我们需要创建一个单词对象的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)
}

我试图为每个循环运行循环,并创建一个迭代器。 我不断收到不兼容的类型错误,或条目具有私有访问错误。 这可能是一个简单的解决方法,但是我一直在撞墙,尝试一切以使其正常工作。 PLZ帮助:(

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM