将流收集到列表错误:必需的List <Integer>,但将“映射”推断为Stream <R>

时间:2019-12-28 11:25:35

标签: java java-stream

我有这个视频流:

List<Integer> l = stepElements.stream()
            .map(p -> p.select(STEP_ID))
            .stream()
                    .map(Element::text)
                    .map(Integer::parseInt)
                    .sorted()
                    .collect(Collectors.toList());
          //.collect(Collectors.toCollection(ArrayList<Integer>::new));

请删除此问题,因为我只会得到负面评价

2 个答案:

答案 0 :(得分:1)

我认为第2行缺少右括号。

我有下一个视频流:

List<Integer> l = stepElements.stream()
            .map(p -> p.select(STEP_ID))
            .stream()
                    .map(Element::text)
                    .map(Integer::parseInt)
                    .sorted()
                    .collect(Collectors.toList());
          //.collect(Collectors.toCollection(ArrayList<Integer>::new));

答案 1 :(得分:1)

您需要先将Stream<Stream<Integer>>展平为Stream<Integer,然后才能收集到展平清单:

List<Integer> l = stepElements.stream()
            .flatMap(p -> p.select(STEP_ID)
                           .stream()
                           .map(Element::text)
                           .map(Integer::parseInt))
            .sorted()
            .collect(Collectors.toList());