用stream 流List 求Jsonobject 某一字段的和
时间: 2024-09-19 16:05:53 浏览: 104
java json字符串转JSONObject和JSONArray以及取值的实例
在Java中,如果你有一个`List<JsonObject>`,并且你想计算每个JsonObject中特定字段的值之和,可以使用Java 8的Stream API。首先,你需要保证每个JsonObject都包含这个计算字段,并且该字段能转换为数值类型。以下是一个示例:
```java
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
// 假设我们有这样一个json对象列表
List<JsonObject> jsonObjects = new ArrayList<>();
Gson gson = new Gson();
// 增加一些测试数据
JsonObject obj1 = gson.fromJson("{\"field\": 10}", JsonObject.class);
JsonObject obj2 = gson.fromJson("{\"field\": 20}", JsonObject.class);
// ...
// 使用流API求和
double sum = jsonObjects.stream()
.map(jsonObject -> jsonObject.get("field")) // 获取指定字段
.filter(Objects::nonNull) // 过滤掉null值
.mapToDouble(JsonObject::getAsDouble) // 将Json对象的"field"转换为double
.sum(); // 计算总和
System.out.println("Sum of field values: " + sum);
}
}
```
在这个例子中,假设`JsonObject`有一个名为"field"的字段,我们可以使用`.get()`方法获取该字段的值,然后通过`.mapToDouble()`将其转换为double以便于进行数学运算。`filter(Objects::nonNull)`用于过滤掉`field`不存在或者为null的对象。
阅读全文