Ale*_*ini 3 python java lambda arraylist
我想在Java中找到一个单行表达式,允许实例化一个ArrayList
并在其中插入一些特定元素.
例如,一个表达式,用于创建ArrayList
包含[0, n]
可被3整除的区间中的数字.
我设法将过滤后的元素插入到ArrayList
,但只使用forEach
以下方式使用表达式:
ArrayList<Integer> numberList = new ArrayList<Integer>;
IntStream.range(0, n + 1)
.filter(number -> number % 3 == 0)
.forEach(number -> numberList.add(number));
Run Code Online (Sandbox Code Playgroud)
如您所见,有必要单独实例化ArrayList
然后插入元素.
在Python中,我们可以使用以下单行:
numberList = [number for number in range(0, n + 1) if number % 3 == 0]
Run Code Online (Sandbox Code Playgroud)
是否存在与Java 8中的代码等效或类似的东西?
提前致谢.
您可以使用收集器在列表中添加元素:
int n = 10;
List<Integer> list = IntStream.range(0, n + 1)
.filter(number -> number % 3 == 0)
.boxed() // converts IntStream to Stream<Integer> (primitive type to wrapper type)
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
编辑:正如Aominè在评论中所说,你也可以用IntStream.rangeClosed(0, n)
而不是IntStream.range(0, n + 1)