我讀過有關排序名單按字母順序,如:Hashmap sorting,Sorting Maps排序部分按字母順序
我有一個值,如
Tarantulas, 6
Lions, 5
Snakes, 2
Zoopies, 2
Zappin, 2
Chapas, 1
Zong Zwing, 1
Chingos, 1
Chapis, 1
Grouches, 0
我需要一個Map<String, Integer>
(只)排序按字母順序排列相同點的部分。這是樣本數據,因此無法知道Map中的實際值,因此需要根據所存在的值進行排序。我已經分組/排序使用值:
public <K, V extends Comparable<V>> Map<K, V> sortByValues(final Map<K, V> map) {
Comparator<K> valueComparator = new Comparator<K>() {
public int compare(K k1, K k2) {
int compare = map.get(k2).compareTo(map.get(k1));
if (compare == 0) {
return 1;
} else {
return compare;
}
}
};
Map<K, V> sortedByValues = new TreeMap<K, V>(valueComparator);
sortedByValues.putAll(map);
return sortedByValues;
}
這是預期的結果:
Tarantulas, 6
Lions, 5
Snakes, 2
Zappin, 2
Zoopies, 2
Chapas, 1
Chapis, 1
Chingos, 1
Zong Zwing, 1
Grouches, 0
所以問題是:我如何排序只具有相同點地圖的那些部分(整數值),並保持原樣?
我使用的Java 7
使用地圖是強制性的嗎?我會使用一組對象來代替。 – SimoV8
我用了一個比較器。將該代碼添加到問題中,但我不認爲它可能有用。您可以看到Map按照值排序,並且Map中的整數值被分組在一起。 –
你不應該使用地圖。使用列表,其中動物是一個具有名稱和價值的類。使用按值排序的比較器進行排序,然後按名稱排序。 –