List<JSONObject> 按照JSONObject多个属性排序

public class test2 {


public static void main(String[] args) {
List<JSONObject> l=new ArrayList<JSONObject>();
for(int i=0;i<5;i++){
JSONObject jb=new JSONObject();
jb.put("name", "a");
jb.put("prize", 120+i);
jb.put("time", "2016-"+ i +"-08 12:21:51");
l.add(jb);
}

List<JSONObject> l2=new ArrayList<JSONObject>();
for(int i=0;i<5;i++){
JSONObject jb=new JSONObject();
jb.put("name", "b");
jb.put("prize", 122+i);
jb.put("time", "2017-"+ i +"-08 12:21:51");
l2.add(jb);
}

l.addAll(l2);
for(int i=0;i<l.size();i++){
System.out.println(l.get(i));
}
System.out.println("----------after sort------------");

dd(l);
for(int i=0;i<l.size();i++){
System.out.println(l.get(i));
}
}



public static void dd(List<JSONObject> l){
Collections.sort(l, new Comparator<JSONObject>() {
private static final String KEY_NAME = "prize";
private static final String KEY_NAME2 = "time";


@Override
public int compare(JSONObject a, JSONObject b) {
String valA_1 = new String();
String valB_1 = new String();
String valA_2 = new String();
String valB_2 = new String();


try {
valA_1 = a.getString(KEY_NAME);
valB_1 = b.getString(KEY_NAME);
valA_2 = a.getString(KEY_NAME2);
valB_2 = b.getString(KEY_NAME2);
} catch (JSONException e) {
// do something
}
int flag = valB_1.compareTo(valA_1);
if (flag == 0) {
return valB_2.compareTo(valA_2);
} else {
return flag;
}
}
});
}

}


--------------------------------------------------------------------------------

public class test4 {


public static void main(String[] args) {
String jsonString = "[{ \"orderId\": \"431\", \"installment\": \"9\" }, { \"orderId\": \"135\", \"installment\": \"9\" },{ \"orderId\": \"432\", \"installment\": \"9\" },{ \"orderId\": \"135\", \"installment\": \"8\" },{ \"orderId\": \"135\", \"installment\": \"2\" },{ \"orderId\": \"432\", \"installment\": \"5\" },{ \"orderId\": \"431\", \"installment\": \"3\" }]";


JSONArray jsonArray = JSONArray.fromObject(jsonString);
if (jsonArray != null) {
List<JSONObject> jsonList = new ArrayList<JSONObject>();
for (int i = 0; i < jsonArray.size(); i++) {
jsonList.add(jsonArray.getJSONObject(i));
}
// 重写排序方法,按照order by
// orderId,installment方式排序,确保同个订单orderId优先还期数installment靠前的
Collections.sort(jsonList, new Comparator<JSONObject>() {
private static final String KEY_NAME = "orderId";
private static final String KEY_NAME2 = "installment";


@Override
public int compare(JSONObject a, JSONObject b) {
String valA_1 = new String();
String valB_1 = new String();
String valA_2 = new String();
String valB_2 = new String();


try {
valA_1 = a.getString(KEY_NAME);
valB_1 = b.getString(KEY_NAME);
valA_2 = a.getString(KEY_NAME2);
valB_2 = b.getString(KEY_NAME2);
} catch (JSONException e) {
// do something
}
int flag = valA_1.compareTo(valB_1);
if (flag == 0) {
return valA_2.compareTo(valB_2);
} else {
return flag;
}
}
});
}

for(int i=0;i<jsonArray.size();i++){
System.out.println(jsonArray.get(i));
}


}


public static void sorrr() {

}
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值