JSONArray.stream group by
时间: 2023-08-19 14:16:28 浏览: 152
JSONArray.fromObject()方法和引入net.sf.json所需的依赖包
引用\[1\]中的内容是一个JSON数组,其中包含了两个对象。每个对象都有三个属性:companyName、Qty和orderAmt。根据你提供的内容,我理解你的问题是如何使用JSONArray.stream进行分组操作。
在Java中,可以使用JSONArray.stream()方法将JSONArray转换为一个流(Stream),然后使用流的groupingBy()方法进行分组操作。groupingBy()方法接受一个Function参数,用于指定按照哪个属性进行分组。
以下是一个示例代码,演示如何使用JSONArray.stream和groupingBy进行分组操作:
```java
import org.json.JSONArray;
import org.json.JSONObject;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
public static void main(String\[\] args) {
String jsonStr = "\[{\"companyName\":\"A\",\"Qty\":4,\"orderAmt\":300}, {\"companyName\":\"B\",\"Qty\":10,\"orderAmt\":600}\]";
JSONArray jsonArray = new JSONArray(jsonStr);
Map<String, Long> groupByCompany = jsonArray.stream()
.map(obj -> (JSONObject) obj)
.collect(Collectors.groupingBy(obj -> obj.getString("companyName"), Collectors.counting()));
System.out.println(groupByCompany);
}
}
```
在上述代码中,我们首先将JSON字符串转换为JSONArray对象。然后,我们使用JSONArray.stream()方法将JSONArray转换为一个流(Stream)。接下来,我们使用map()方法将流中的每个元素转换为JSONObject对象。最后,我们使用Collectors.groupingBy()方法按照companyName属性进行分组,并使用Collectors.counting()方法计算每个分组的数量。
运行上述代码,将输出一个Map,其中键是公司名称,值是该公司在JSONArray中出现的次数。
希望这个示例能够帮助你理解如何使用JSONArray.stream进行分组操作。如果你有任何其他问题,请随时提问。
#### 引用[.reference_title]
- *1* [java8 stream下的groupby与tomap性能测试](https://blog.csdn.net/uestcwolf/article/details/93638476)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文