Java 按降序对数据数组进行排序

Java 按降序对数据数组进行排序,java,android,json,Java,Android,Json,如何根据“created_at”(2019-08-302019-08-29)数据降序排序json数据,并在android中将值设置为textview。请尝试此操作 [ { "id":"1", "created_at":"2019-08-19 02:54:36", "updated_at":"2019-09-04 15:00:05" }, { "id":"2", "created_at":"2019-08-27 08:59:18", "updated_at":"2019-0

如何根据“created_at”(2019-08-302019-08-29)数据降序排序json数据,并在android中将值设置为textview。

请尝试此操作

[
{
  "id":"1",
  "created_at":"2019-08-19 02:54:36",
  "updated_at":"2019-09-04 15:00:05"
},
{
  "id":"2",
  "created_at":"2019-08-27 08:59:18",
  "updated_at":"2019-09-04 14:59:14"
},
{
  "id":"4",
  "created_at":"2019-08-29 20:19:54",
  "updated_at":"2019-09-04 14:58:53"
}
]
publicstaticjsonarray sortJsonArray(JSONArray数组){
List jsons=new ArrayList();
对于(int i=0;i
使用gson库的解决方案:

public static JSONArray sortJsonArray(JSONArray array) {
List<JSONObject> jsons = new ArrayList<JSONObject>();
for (int i = 0; i < array.length(); i++) {
    jsons.add(array.getJSONObject(i));
}
Collections.sort(jsons, new Comparator<JSONObject>() {
    @Override
    public int compare(JSONObject lhs, JSONObject rhs) {
        String lid = lhs.getString("created_at");
        String rid = rhs.getString("created_at");
        // Here you could parse string id to integer and then compare.
        return lid.compareTo(rid);
    }
});
return new JSONArray(jsons);
}
用法

public class DateModel {
        String id;
        String created_at;
        String updated_at;
    }
输出

2019-08-3009:31:422019-08-2920:19:542019-08-2708:59:1822019-08-1902:54:36

更新

public class DateModel {
        String id;
        String created_at;
        String updated_at;
    }
下面是用标准java实现替换gson

publicstaticvoidsetSortedDate(字符串json,TextView tv){
List List=getListFromJson(json);
Collections.sort(list,newDateModelComparator());
int i=list.size();
用于(日期型号d:列表){
附加(d.created_at);
如果(--i>0)tv.append(“,”);
}
}
私有静态列表getListFromJson(字符串json){
列表=新建LinkedList();
试一试{
JSONArray数组=新的JSONArray(json);

对于(int i=0;我想用Kotlin还是Java来解决问题?用Java……。试试下面的回答它对我有用好的,我正在用Java来解决问题如果你不想使用gson,请告诉我?我会用Java标准解决方案来替换该部分。
private static final String JSON = "[ { \"id\": \"1\", \"created_at\": \"2019-08-19 02:54:36\", \"updated_at\": \"2019-09-04 15:00:05\" }, { \"id\": \"2\", \"created_at\": \"2019-08-27 08:59:18\", \"updated_at\": \"2019-09-04 14:59:14\" }, { \"id\": \"4\", \"created_at\": \"2019-08-29 20:19:54\", \"updated_at\": \"2019-09-04 14:58:53\" }, { \"id\": \"5\", \"created_at\": \"2019-08-30 09:31:42\", \"updated_at\": \"2019-09-04 14:58:40\" } ]";

setSortedDate(JSON, tv);
public static void setSortedDate (String json, TextView tv) {
        List<DateModel> list = getListFromJson(json);
        Collections.sort(list, new DateModelComparator());
        int i = list.size();
        for(DateModel d: list){
            tv.append(d.created_at);
            if(--i > 0) tv.append(", ");
        }
    }

private static List<DateModel> getListFromJson (String json) {
        List<DateModel> list = new LinkedList<>();
        try {
            JSONArray array = new JSONArray(json);
            for(int i=0;i<array.length();i++){
                JSONObject obj = array.getJSONObject(i);
                DateModel dm = new DateModel();
                dm.id = obj.getString("id");
                dm.created_at = obj.getString("created_at");
                dm.updated_at = obj.getString("updated_at");
                list.add(dm);
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return list;
    }
public class DateModelComparator implements Comparator<DateModel> {

        @Override
        public int compare (DateModel p1, DateModel p2) {
            DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
            try {
                Date d1 = df.parse(p1.created_at);
                Date d2 = df.parse(p2.created_at);
                return d2.compareTo(d1);
            } catch (ParseException e) {
                e.printStackTrace();
            }

        return 0;
    }

}