Java8流元素和 [ [“2016-09-22T15:56:00.05566829Z”,12223.0], [“2016-09-22T17:27:16.315085913Z”,10964.0] ] List jsonValue=JsonPath.read(json,“$.results[0].series[0].values”); Double sum=jsonValue.stream() .map(list->list.get(1)) .mapToDouble(Double::parseDouble) .sum();

Java8流元素和 [ [“2016-09-22T15:56:00.05566829Z”,12223.0], [“2016-09-22T17:27:16.315085913Z”,10964.0] ] List jsonValue=JsonPath.read(json,“$.results[0].series[0].values”); Double sum=jsonValue.stream() .map(list->list.get(1)) .mapToDouble(Double::parseDouble) .sum();,java,java-stream,Java,Java Stream,我得到了json格式的数组。我必须对每个数组中的第二个元素求和。例如(12223.0+10964.0)。如何使用java 8 streams进行转换。我已将其转换为List如果您的数据格式为List,您可以得到如下总和: [ ["2016-09-22T15:56:00.05566829Z", 12223.0], ["2016-09-22T17:27:16.315085913Z", 10964.0] ] List<List<String>> jsonValue

我得到了json格式的数组。我必须对每个数组中的第二个元素求和。例如(12223.0+10964.0)。如何使用java 8 streams进行转换。我已将其转换为List

如果您的数据格式为List,您可以得到如下总和:

[
  ["2016-09-22T15:56:00.05566829Z", 12223.0],
  ["2016-09-22T17:27:16.315085913Z", 10964.0]
   ]
List<List<String>> jsonValue = JsonPath.read(json, "$.results[0].series[0].values");

            Double sum = jsonValue.stream()
                    .map(list -> list.get(1))
                    .mapToDouble(Double::parseDouble)
                    .sum();

流不解析JSON。我将它转换为列表。我得到了这个java.lang.ClassCastException:java.lang.Double不能转换为java.lang。String@user1733735除非列表中有垃圾数据,否则不可能。请使用填充列表的代码更新问题。列表jsonValue=JsonPath.read(json,“$.results[0].series[0].values”);如果您更喜欢方法引用,可以使用
.map(Number.class::cast).mapToDouble(Number::doubleValue)
。否则,没有理由将这些操作分开:
.mapToDouble(o->((Number)o).doubleValue())
List<List<String>> data = ...
double sum = data.stream()
        .map(list -> list.get(1))
        .mapToDouble(Double::parseDouble)
        .sum()
List<List<Object>> jsonValue = JsonPath.read(json, "$.results[0].series[0].values");
//        ^^^^^^
Double sum = jsonValue.stream()
        .map(list -> list.get(1))
        .map(o -> (Number)o)
        .mapToDouble(Number::doubleValue)
        .sum();