[英]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.