List<JSONObject> not_03_list = jsonObjectList.stream().filter(json -> !json.getString("commodityType").equals("PT03")).collect(Collectors.toList());根据某个字段分组
时间: 2024-03-10 22:45:12 浏览: 110
要根据某个字段对 `List<JSONObject>` 进行分组,可以使用 `Collectors.groupingBy()` 方法来实现。
例如,假设您有一个 `List<JSONObject>` 对象,并且希望根据 `commodityType` 字段进行分组,可以这样写:
```
Map<String, List<JSONObject>> groupedMap = jsonObjectList.stream()
.collect(Collectors.groupingBy(json -> json.getString("commodityType")));
// 输出每个分组中的元素数量
groupedMap.forEach((key, value) -> {
System.out.println("Commodity type: " + key + ", count: " + value.size());
});
```
在这个例子中,`groupingBy()` 方法的参数是一个 `Function`,用于将每个元素映射为一个分组的 key。这里我们使用 `json -> json.getString("commodityType")` 的 Lambda 表达式来将每个元素的 `commodityType` 字段作为 key,然后使用 `Map<String, List<JSONObject>>` 类型来存储分组结果。
最后我们使用 `forEach()` 方法遍历每个分组,输出分组的 key 和 value 的大小。
请注意,如果 `commodityType` 字段可能为 `null` 或不存在,建议在使用 `getString()` 方法之前先使用 `containsKey()` 方法或 `getOrDefault()` 方法进行判断,避免出现空指针异常。
阅读全文