List 按照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() {

}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章