可选字段流返回值

eL_*_*eL_ 4 java optional java-8 java-stream

我有一些带String和Long值的可选字段:

Optional<Long> id;
Optional<String> name;
Optional<String> lastname;
Optional<Long> number;
....
Run Code Online (Sandbox Code Playgroud)

我想返回包含所有值的List.如果例如可选的"名称"不存在,则应存储空字符串.方法的结果应该是List,其值为eq:"1","John","","5".

我做了流:

Stream fields = Stream.of(id, name, lastname, number);
Run Code Online (Sandbox Code Playgroud)

但我不知道接下来会发生什么.

问候.

Bye*_*Bye 8

您可以使用:

List<String> list = Stream.of(id, name, lastname, number)
        .map(op -> op.map(o -> o.toString()).orElse(""))
        .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

在流中的每个可选项中,您将String使用toString()from Objectclass 将其映射到它的版本,null并将它映射为空String.比,你会把它收集到列表中.