我有一些这样的代码,我尝试按 sortby 中给出的键对 Map 列表中的值进行排序。代码如下:
final String sortby = "first";
List<Map> lm = new ArrayList<Map>();
Map m = new HashMap();
m.put("id", "eka");
m.put("first", "ek");
m.put("last", "a");
lm.add(m);
m = new HashMap();
m.put("id", "adit");
m.put("first", "adi");
m.put("last", "t");
lm.add(m);
for(Object M : lm){
System.out.println(M.toString());
}
Comparator<Map<String,String>> mapComparator = new Comparator<Map<String,String>>() {
public int compare(Map<String,String> m1, Map<String,String> m2) {
return m1.get(sortby).compareTo(m2.get(sortby));
}
};
Collections.sort(lm, mapComparator);
for(Object M : lm){
System.out.println(M.toString());
}
但无法使用比较器进行比较,因为数据类型不兼容。我如何转换Map<>
至Map<String,String>
或任何其他建议,以便比较器可以比较所有数据类型?
最佳答案
class MapComparator<K,V extends Comparable<V>> implements Comparator<Map<K,V>> {
public int compare(Map<K,V> m1, Map<K,V> m2) {
return m1.get(sortby).compareTo(m2.get(sortby));
}
}
关于java - 将 Map<> 转换为 Map<String,String>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36495570/