如何迭代for循环并添加到java 8中的列表?

soo*_*man 3 java for-loop java-8

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

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

上面的代码正在运行.这是正确的方法还是有其他方法可以实现?

谢谢

Rad*_*def 5

Verbatim就像这样,有一个Collector:

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

如果我们不关心的类型有点短List:

List<Integer> orderDayList =
    IntStream.rangeClosed(1, 28)
             .boxed()
             .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

请参阅Collectors+ 教程.

这是正确的方法[...]?

好吧,从lambda内部修改外部世界被认为是草率的形式,但这对于这么简单的事情并没有真正有用.

另外,为了让你思考,你的lambda可以写成方法参考:

IntStream.rangeClosed(1, 28)
         .forEach(orderDayList::add);
Run Code Online (Sandbox Code Playgroud)

  • 具有讽刺意味的是,最有效的解决方案是`List <Integer> orderDayList = Arrays.asList(IntStream.rangeClosed(1,28).boxed().toArray(Integer [] :: new));`因为这是唯一的解决方案没有任何内部数据(阵列)复制. (3认同)