自定义数组排序

本是古典 何须时尚 2024-02-20 12:36 124阅读 0赞

自定义数组排序, 传入jsonArray ,排序所需要的值,正序还是倒序

  1. /*数组排序*/
  2. public static JSONArray jsonArraySort(JSONArray jsonArr, String sortKey, boolean is_desc) {
  3. //存放排序结果json数组
  4. JSONArray sortedJsonArray = new JSONArray();
  5. //用于排序的list
  6. List<JSONObject> jsonValues = new ArrayList<JSONObject>();
  7. //将参数json数组每一项取出,放入list
  8. for (int i = 0; i < jsonArr.size(); i++) {
  9. jsonValues.add(jsonArr.getJSONObject(i));
  10. }
  11. //快速排序,重写compare方法,完成按指定字段比较,完成排序
  12. Collections.sort(jsonValues, new Comparator<JSONObject>() {
  13. //排序字段
  14. private final String KEY_NAME = sortKey;
  15. //重写compare方法
  16. @Override
  17. public int compare(JSONObject a, JSONObject b) {
  18. //如果用String接会导致一位数和两位数混合比对的时候不能准确比出来,要用int类型接
  19. //String valA = new String();
  20. //String valB = new String();
  21. Float valA = 0.00f;
  22. Float valB = 0.00f;
  23. try {
  24. valA = Float.parseFloat(a.getString(KEY_NAME));
  25. valB = Float.parseFloat(b.getString(KEY_NAME));
  26. } catch (JSONException e) {
  27. e.printStackTrace();
  28. }
  29. //是升序还是降序
  30. if (is_desc) {
  31. return -valA.compareTo(valB);
  32. } else {
  33. return -valB.compareTo(valA);
  34. }
  35. }
  36. });
  37. //将排序后结果放入结果jsonArray
  38. for (int i = 0; i < jsonArr.size(); i++) {
  39. sortedJsonArray.add(jsonValues.get(i));
  40. }
  41. return sortedJsonArray;
  42. }

发表评论

表情:
评论列表 (有 0 条评论,124人围观)

还没有评论,来说两句吧...

相关阅读