我有一个String to String的地图,我想根据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"));
}
});
答案 0 :(得分:2)
将String
转换为Integer
并比较为Integer
s:
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
的位置。您是否忘记在问题中包含该代码?
答案 1 :(得分:0)
首先需要将String转换为整数然后比较将像这样工作。
$(function() {
var $data = $('#content');
$.ajax({
type:'GET',
dataType:'jsonp',
url:'https://syncslider-ehnoxx07.c9users.io/default-preview-template.php',
success: function (data) {
$('#content').html(data)
});
});
答案 2 :(得分:0)
您忘记将地图添加到列表中,并且从未初始化地图h3。拆开你的代码已经按原样运行,但是将地图从最高id到最低进行排序。如果您将比较行更改为:
Collections.sort(listSummaryMap , new Comparator<Map<String, String>>() {
@Override
public int compare(Map<String, String> o1, Map<String, String> o2) {
return o1.get("F").compareTo(o2.get("F"));
}
});
然后它会按照“F”从最低值到最高值对地图进行排序。
希望有所帮助