Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用空字符串按降序排序JSONArray_Android_Json_Sorting_Arraylist_Hashmap - Fatal编程技术网

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的回复似乎不错。