使用.map()编写for循环

我有这段代码是通过for循环实现的。我想用.stream和.map()函数编写它。我尝试使用.map()函数。但是不幸的是我得到以下错误:

不兼容的类型。必填列表>,但“收集”为   推断为R:不存在类型变量的实例,因此   布尔值符合列表推断变量T具有不兼容的   界限:等式约束:列出下界:布尔值

这是旧的代码:

 public Iterable<Record> findAll(final List<Long> id) {
        final List<Record> result = new LinkedList<Record>();
        final List<List<Long>> partitions = ListUtils.partition(id, 10);
        for (List<Long> partition : partitions) {
            Iterables.addAll(
                    result,
                    this.repository.findAll(partition) 
            );
        }
        return result;
    }

这是我使用.map()时的代码

   public Iterable<Record> findAll(final List<Long> id) {
        final List<Record> result = new LinkedList<Record>();
        final List<List<Long>> partitions = ListUtils.partition(id, 10);

         List<List<Long>> allPartitions = partitions.stream().map(partition ->{
            return Iterables.addAll(result, this.repository.findAll(partition));
        }).collect(Collectors.toList());

        return result;
    }

关于如何解决此问题的任何建议?还是我应该注意什么?

评论
  • 小偏执i
    小偏执i 回复

    I guess you can replase for loop with forEach:

    public Iterable<Record> findAll(final List<Long> id) {
        final List<Record> result = new LinkedList<Record>();
        final List<List<Long>> partitions = ListUtils.partition(id, 10);
        partitions.forEach(partition -> Iterables.addAll(result, this.repository.findAll(partition)));
        return result;
    }