我现在开始使用java8,我想知道如何迭代n次循环并添加到列表中:

List orderDayList = new ArrayList<>();
        IntStream.rangeClosed(1, 28).forEach(value -> {
            orderDayList.add(value);
        });

上面的代码正在工作,这是正确的方法还是还有其他方法可以实现?

谢谢

最佳答案

像这样,用Collector逐字显示:

List<Integer> orderDayList =
    IntStream.rangeClosed(1, 28)
             .boxed()
             .collect(Collectors.toCollection(ArrayList::new));

如果我们不在乎List的类型,则要短一些:
List<Integer> orderDayList =
    IntStream.rangeClosed(1, 28)
             .boxed()
             .collect(Collectors.toList());

参见 Collectors + tutorial

那是正确的方法吗?

嗯,从lambda内部修改外部世界被认为是草率形式,但对于这里的这种简单事情并没有真正的改变。

同样,为了让您思考,您可以将lambda编写为方法参考:
IntStream.rangeClosed(1, 28)
         .forEach(orderDayList::add);

07-24 09:19