排序ArrayList< HashMap< String,String>>使用价值 [英] sort ArrayList<HashMap<String, String>> using value
本文介绍了排序ArrayList< HashMap< String,String>>使用价值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的代码中有Hashmap的ArrayList 我对应该使用哪种排序方法感到困惑? 我的代码如下
I have ArrayList of Hashmap in my code i have confusion that which sort method should i use? my code is as following
arraylist = new ArrayList<HashMap<String, String>>();
// Retrieve JSON Objects from the given URL address
jsonobject = JSONFunctions
.getJSONfromURL("https://api.foursquare.com/v2/venues/search? client_id=ACAO2JPKM1MXHQJCK45IIFKRFR2ZVL0QASMCBCG5NPJQWF2G&client_secret=YZCKUYJ1W HUV2QICBXUBEILZI1DMPUIDP5SHV043O04FKBHL&v=20130815&ll=-34.678,138.87&radius=5000§ion=coffee");
try {
// Locate the array name in JSON
jsonarray = jsonobject.getJSONObject("response");
JSONArray jsonSubarray = jsonarray.getJSONArray("venues");
Log.v("Response Array", String.valueOf(jsonSubarray));
for (int i = 0; i < jsonSubarray.length(); i++) {
HashMap<String, String> map = new HashMap<String, String>();
jsonobject = jsonSubarray.getJSONObject(i);
// Retrive JSON Objects
// Retrive JSON Objects
Log.v("Store name", jsonobject.getString("name"));
map.put("storeName", jsonobject.getString("name"));
JSONObject locationObject = jsonobject.getJSONObject("location");
Log.v("if condition",String.valueOf( locationObject.has("city")));
if(locationObject.has("city"))
{
map.put("city", locationObject.getString("city"));
}
else
map.put("city","N/A");
double km = Double.valueOf(locationObject.getString("distance")) / 1000 ;
Log.v("distance", String.valueOf(km));
map.put("distance", String.valueOf(km));
arraylist.add(map);
}
} catch (JSONException e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return null;
}
这是我的JSON数据格式
And here is my JSON data format
"id": "4e321829d4c00077f657b8ec",
"name": "TeAro Estate Wines",
"contact": {},
"location": {
"lat": -34.670859098532766,
"lng": 138.89067804714347,
"distance": 2053,
"cc": "AU",
"city": "Williamstown",
"state": "SA",
"country": "Australia",
"formattedAddress": [
"Williamstown SA",
"Australia"
]
},
"categories": [
{
"id": "4bf58dd8d48988d14b941735",
"name": "Winery",
"pluralName": "Wineries",
"shortName": "Winery",
"icon": {
"prefix": "https://ss3.4sqi.net/img/categories_v2/food/winery_",
"suffix": ".png"
},
"primary": true
}
],
{
"id": "4c454825f0bdd13a65c9cacc",
"name": "Barossa Dam",
"contact": {},
"location": {
"address": "Dam it",
"lat": -34.645353,
"lng": 138.848115,
"distance": 4150,
"cc": "AU",
"city": "Sandy Creek",
"state": "SA",
"country": "Australia",
"formattedAddress": [
"Dam it",
"Sandy Creek SA",
"Australia"
]
},
我想按距离对它进行排序 请给我一些我应该使用哪种方法的建议 我对哈希映射的数组列表和数组列表感到困惑 如何使用collection.sort对数据进行排序.
I want to sort it by distance please give me some advice of what approach should i use I get confused with array list and array list of hash map how can i use collection.sort to sort my data.
我想根据ArrayList中的值进行排序.
I want to sort on the basis of a value in the ArrayList.
推荐答案
使用比较器对其进行排序.
Use a Comparator to sort it.
Comparator<HashMap<String, String>> distanceComparator = new Comparator<HashMap<String,String>>() {
@Override
public int compare(HashMap<String, String> o1, HashMap<String, String> o2) {
// Get the distance and compare the distance.
Integer distance1 = Integer.parseInt(o1.get("distance"));
Integer distance2 = Integer.parseInt(o2.get("distance"));
return distance1.compareTo(distance2);
}
};
// And then sort it using collections.sort().
Collections.sort(arrayList, distanceComparator);
这篇关于排序ArrayList< HashMap< String,String>>使用价值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文