Lambda表达式初始化数组

大卫·马克西尔:

有没有一种方法可以使用简单的lambda表达式来初始化数组或集合?

就像是

// What about this?
Person[] persons = new Person[15];
persons = () -> {return new Person()};

要么

// I know, you need to say how many objects
ArrayList<Person> persons = () -> {return new Person()};
乔恩·斯基特(Jon Skeet):

当然-我不知道它有多有用,但是肯定是可行的:

import java.util.*;
import java.util.function.*;
import java.util.stream.*;

public class Test
{
    public static void main(String[] args)
    {
        Supplier<Test> supplier = () -> new Test();
        List<Test> list = Stream
            .generate(supplier)
            .limit(10)
            .collect(Collectors.toList());
        System.out.println(list.size()); // 10
        // Prints false, showing it really is calling the supplier
        // once per iteration.
        System.out.println(list.get(0) == list.get(1));
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在lambda表达式类被初始化?

奇怪的数组初始化表达式?

PHP:使用表达式初始化数组

在lambda是方法参数的情况下,如何正确初始化lambda表达式的参数?

为什么不捕获使用lambda表达式初始化的非捕获表达式树?

带lambda表达式的invokeAndWait在静态初始化程序中永久挂起

Java8 Lambda表达式迭代枚举值并初始化最终成员

Java“空白的final字段可能尚未初始化”匿名接口vs Lambda表达式

无法使用各种Lambda表达式初始化std :: variant

Lambda表达式可使用参数和属性初始化类

使用表达式列表在 C++ 20 中初始化多维数组

是否可以使用循环表达式初始化Fortran参数数组?

从数组文字初始化Set的“表达式太复杂”

使用AsParallel进行C#包装数组初始化-表达式树

初始化多维数组时出现“预期表达式”错误

使用正则表达式初始化地图

后缀表达式(类型名称){初始化列表}

如何用逻辑表达式初始化布尔?

正则表达式初始化问题

初始化声明符是prvalue表达式吗

将表达式传递给初始化程序

带有表达式的C ++初始化列表

当规则说初始化的完整表达式时,这是完整表达式

Setenv:类型表达式列表在初始化程序中被视为复合表达式

错误:表达式列表在初始化器中被视为复合表达式 [-fpermissive]|

当使用字符串文字初始化字符数组时,数组表达式不会转换为指针

在折叠表达式中使用lambda时出现“未初始化的捕获引用”错误-Clang vs GCC

结构化绑定初始化形式{赋值表达式}对于clang上的数组类型失败

尝试初始化嵌套数组时出错“赋值表达式的左侧可能不是可选的属性访问。”