Java 8 字符串列表和字符串列表

Ash*_*hra 1 java java-stream collectors

我想从 Bean 列表生成一个字符串列表,包括 id 和外部 id。

public class User {
    private String id;
    private List<String> externalIds;
}
Run Code Online (Sandbox Code Playgroud)

我使用下面的代码得到了它,但这里我需要进行两次流。

List<User> references = new ArrayList();
Stream.concat(references.stream().map(User::getId),
references.stream().map(User::getExternalIds).flatMap(Collection::stream))
            .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来重写这段代码?

Rob*_*oor 8

Stream.concat在操作内部使用flatMap

references.stream()
        .flatMap(user -> Stream.concat(
            Stream.of(user.getId()),
            user.getExternalIds().stream()
        ))
        .collect(Collectors.toList())
Run Code Online (Sandbox Code Playgroud)

  • 允许空集合、映射或数组通常不好使用,因为您需要添加大量空检查。使用空集合/列表/集、映射或数组几乎总是更好。 (2认同)