Java 按降序对数据数组进行排序
如何根据“created_at”(2019-08-302019-08-29)数据降序排序json数据,并在android中将值设置为textview。请尝试此操作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
[
{
"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;
}
}