Android 使用空字符串按降序排序JSONArray
您好,请在标记为重复之前查看问题 我有一个乔恩阵列Android 使用空字符串按降序排序JSONArray,android,json,sorting,arraylist,hashmap,Android,Json,Sorting,Arraylist,Hashmap,您好,请在标记为重复之前查看问题 我有一个乔恩阵列 [ { "ID":"1324" "iname":"Abc", "icounts":"234", "ilikes":"098" }, { "ID":"1224" "iname":"bcd", "icounts":"", //icounts has empty value "ilikes":"098" }, { "ID":"1367" "iname":"Abc", "icounts":"28", "ilikes":"098" }, { "ID
[
{
"ID":"1324"
"iname":"Abc",
"icounts":"234",
"ilikes":"098"
},
{
"ID":"1224"
"iname":"bcd",
"icounts":"", //icounts has empty value
"ilikes":"098"
},
{
"ID":"1367"
"iname":"Abc",
"icounts":"28",
"ilikes":"098"
},
{
"ID":"1098"
"iname":"Abc",
"icounts":"",
"ilikes":"098"
},
{
"ID":"1444"
"iname":"dfgbc",
"icounts":"222",
"ilikes":"098"
},
{
"ID":"1411"
"iname":"bwec",
"icounts":"444",
"ilikes":"9"
}
]
我必须按icount值降序排序
ArrayList<HashMap<String,String>> arrayList= ArrayList<HashMap<String,String>>;
String jsonString = EntityUtils.toString(hres.getEntity()); // in jsonString i am storing json response
JSONArray jarray = new JSONArray(jsonString);
for (int i = 0 ; i <jarray.length();i++)
{
JSONObject jobj = jarray.getJSONObject(i);
HashMap<String,String> map = new HashMap<String,String>();
map.put("ID", jobj.getString("ID"));
map.put("iname", jobj.getString("iname"));
map.put("icount", jobj.getString("icount"));
map.put("ilikes", jobj.getString("ilikes"));
arrayList.add(map);
Collections.sort(arrayList, new Comparator<HashMap<String, String>>() {
@Override
public int compare(HashMap<String, String> lhs, HashMap<String, String> rhs) {
return lhs.get("icounts").compareTo(rhs.get("icounts"));
}
});
}
由于空字段,compareTo未正确排序
所以我想按降序排序。
建议请添加一个逻辑来检查icount值,如果值为null或空字符串,请添加值0。 例如:
String icounts = jobj.getString("icount");
检查如下:
if(icounts!=null && icounts.trim().length() >0 )
{
map.put("icount", jobj.getString("icount"));
}
else{
map.put("icount", "0");
}
希望这对您有所帮助我认为您不应该使用HashMap。您可能应该为数据创建一个类,其中包含for字段。然而,Raghu Rami Reddy的回复似乎不错。