2014-10-16 32 views
0

我HashMap中:的Java排序的HashMap值它們名單<Value>

HashMap<String, List<Value>> facetsInCategories = new HashMap<>(); 

我需要值列表排序此HashMap的值內。列表中的值有四個字段,我需要通過「translatedValue」字符串對列表進行排序。這就是爲什麼我把「getTranslatedValue」放在自定義比較器中。下面是值對象字段:

public String name; 
public int count; 
private String translatedValue; 
private String translation; 

,這裏是我的嘗試:

for (List<Value> value : facetsInCategories.values()) { 
    Collections.sort(value, new Comparator<Value>() { 
      @Override 
      public int compare(Value o1, Value o2) { 
       return o1.getTranslatedValue().compareTo(o2.getTranslatedValue()); 
      } 
    }); 
} 

我一直在做這幾個小時,所以我想你可能在以某種方式提出建議。

+4

結果是什麼你獲得和你期待的結果是什麼? – RealSkeptic 2014-10-16 12:11:06

+0

我期望上面的代碼根據他們的'convertedValue'的String-compareTo的結果對你的Value對象進行排序......這是否已經發生? – JBA 2014-10-16 12:13:19

+1

你爲什麼把名單放回地圖上?這是沒有必要的。排序應該工作文件。 – A4L 2014-10-16 12:13:22

回答

1

代碼看起來不錯。 Collections.sort將對列表進行排序。

爲什麼你需要這條線?

facetsInCategories.put("test", value); 

該列表已添加到散列映射中。而且他們會按照他們的位置進行排序。

但從空安全點,我們假定你是這永遠不會爲空:

o1.getTranslatedValue() 
0

評論這條線,它應該做的伎倆:

facetsInCategories.put("test", value); 
+0

facetsInCategories.put(「test」,value);只是爲了測試,我現在從問題中刪除了它。我現在擔心的是(列表 value:facetsInCategories.values())在第二次迭代中引發錯誤。這不應該發生在我看來。 – TheKolaNN 2014-10-16 12:22:51

+0

第二次迭代? – SMA 2014-10-16 12:24:28

相關問題