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() {

}
}


在Java中,如果你想要将一个`List<entity>`转换成`List<JSONObject>`,你可以使用Gson库或者Jackson库来实现。以下是一个使用Gson库进行转换的示例: 首先,确保你的项目中包含了Gson库的依赖。如果你使用Maven,可以在`pom.xml`中添加如下依赖: ```xml <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.6</version> <!-- 请使用最新的版本 --> </dependency> ``` 然后,你可以使用以下代码来实现转换: ```java import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { // 假设有一个实体类entity List<entity> entityList = new ArrayList<>(); // ... 填充entityList ... // 创建Gson实例 Gson gson = new Gson(); // 使用TypeToken来获取具体的List<JSONObject>类型 Type type = new TypeToken<List<JSONObject>>() {}.getType(); // 将List<entity>转换为List<JSONObject> List<JSONObject> jsonObjectList = gson.fromJson(gson.toJson(entityList), type); // 输出转换后的List<JSONObject> System.out.println(jsonObjectList); } } ``` 这段代码首先创建了一个Gson实例,然后使用`Gson`的`toJson()`方法将`entity`对象的列表转换成一个JSON字符串,最后使用`fromJson()`方法将这个JSON字符串反序列化成`List<JSONObject>`类型的列表。 请注意,上述代码中的`entity`类需要是公开的,并且其中的字段都应该是公开的,或者至少有公开的getter方法,以便Gson可以访问这些字段。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值