我有一个字符串到字符串的映射,我想根据 kay F
的值对映射进行排序,但我的代码无法执行此操作。请指教。
Map<String, String> h = null;
Map<String, String> h1 = null;
Map<String, String> h2 = null;
listSummaryMap = new ArrayList<Map<String, String>>();
h = new HashMap<String, String>();
h.put("SUCCESS", "27");
h.put("TOTAL_HOTELS", "86");
h.put("F", "86");
h.put("RESERVATION_MODE", "86");
h.put("PARTNER_NAME", "86");
h1 = new HashMap<String, String>();
h1.put("SUCCESS", "27");
h1.put("TOTAL_HOTELS", "86");
h1.put("F", "36");
h1.put("RESERVATION_MODE", "86");
h1.put("PARTNER_NAME", "86");
h2 = new HashMap<String, String>();
h2.put("SUCCESS", "27");
h2.put("TOTAL_HOTELS", "86");
h2.put("F", "28");
h2.put("RESERVATION_MODE", "86");
h2.put("PARTNER_NAME", "86");
listSummaryMap .add(h);
listSummaryMap .add(h1);
listSummaryMap .add(h2);
Collections.sort(listSummaryMap , new Comparator<Map<String, String>>() {
@Override
public int compare(Map<String, String> o1, Map<String, String> o2) {
return o2.get("F").compareTo(o1.get("F"));
}
});
最佳答案
将String
转换为Integer
并作为Integer
进行比较:
public int compare(Map<String, String> o1, Map<String, String> o2) {
return Integer.valueOf(o2.get("F")).compareTo(Integer.valueOf(o1.get("F")));
}
这是假设 "F"
键始终存在于 Map
中,并且其值始终可以解析为 Integer
.
顺便说一句,我不知道您将 Map
添加到 listSummaryMap
的位置。您是否忘记在问题中包含该代码?
关于java - 根据 map 列表中的键比较值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39695964/