public class SortListHashMapByValue implements
Comparator<HashMap<? extends Object, ? extends Comparable>> {
private boolean flag;
public SortListHashMapByValue(boolean flag) {
this.flag = flag;
}
public SortListHashMapByValue() {
this(true);
}
public int compare(HashMap<? extends Object, ? extends Comparable> o1,
HashMap<? extends Object, ? extends Comparable> o2) {
Comparable c1 = o1.entrySet().iterator().next().getValue();
Comparable c2 = o2.entrySet().iterator().next().getValue();
if (flag) {
return c1.compareTo(c2);
} else {
return c2.compareTo(c1);
}
}
public static void main(String[] args) {
List<HashMap<String, Float>> list = new ArrayList<>();
HashMap<String, Float> map = new HashMap<>();
map.put("1", 123.0f);
HashMap<String, Float> map1 = new HashMap<>();
map1.put("1", 12.0f);
HashMap<String, Float> map2 = new HashMap<>();
map2.put("1", 1112.0f);
list.add(map);
list.add(map1);
list.add(map2);
Collections.sort(list, new SortListHashMapByValue(false));
List<HashMap<String, Float>> list1 = list;
}
}
上面的方法隻适合 實作了 Comparable的類,例如Double,Integer,Float,String等類
List<HashMap<String, Double>> recordMap = new ArrayList<HashMap<String,Double>>();
for(int i=0,len = 10;i<len;i++){
HashMap<String, Double> itemMap =new HashMap<String, Double>();
Random random =new Random();
Double totalScore = random.nextDouble();
itemMap.put("totalScore", totalScore);
recordMap.add(itemMap);
}
Collections.sort(recordMap, new RankComparator());
public class RankComparator implements Comparator<Map<String, Object>> {
public int compare(Map<String, Object> o1, Map<String, Object> o2) {
Double score1 = (Double) o1.get("totalScore");
Double score2 = (Double) o2.get("totalScore");
return score2.compareTo(score1);
}
}