簡體   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