我读过有关排序名单按字母顺序,如: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中的整数值被分组在一起。 –
你不应该使用地图。使用列表,其中动物是一个具有名称和价值的类。使用按值排序的比较器进行排序,然后按名称排序。 –