jsonArray分组排序
时间: 2023-07-01 07:28:11 浏览: 136
可以使用Java 8的Stream API和lambda表达式来对jsonArray进行分组和排序。
假设我们有一个包含json对象的jsonArray,每个json对象都有一个名为"category"的属性,表示该对象所属的类别。我们希望将jsonArray按照"category"属性进行分组,并按照"category"属性和"price"属性进行排序。
代码示例:
```java
JSONArray jsonArray = ...; // 假设已经有一个jsonArray
Map<String, List<JSONObject>> groupedJsonMap = jsonArray.stream()
.map(obj -> (JSONObject) obj)
.collect(Collectors.groupingBy(obj -> obj.getString("category")));
List<JSONObject> sortedJsonList = groupedJsonMap.entrySet().stream()
.flatMap(entry -> entry.getValue().stream())
.sorted(Comparator.comparing((JSONObject obj) -> obj.getString("category"))
.thenComparing(obj -> obj.getDouble("price")))
.collect(Collectors.toList());
```
解释:
首先,将jsonArray转换为Stream对象,然后使用map方法将每个对象转换为JSONObject对象。
接下来,使用Collectors.groupingBy方法按照"category"属性进行分组,得到一个Map<String, List<JSONObject>>。
然后,使用flatMap方法将Map中的每个List<JSONObject>转换为一个新的Stream对象,并使用sorted方法按照"category"属性和"price"属性进行排序。
最后,使用Collectors.toList方法将排序后的Stream对象转换为List<JSONObject>对象。
这样,就可以按照"category"属性进行分组排序了。
阅读全文