.stream()vs Stream.of

aur*_*ius 11 java java-8 java-stream

哪个是从集合中创建流的最佳方法:

    final Collection<String> entities = someService.getArrayList();
Run Code Online (Sandbox Code Playgroud)
  1. entities.stream();

  2. Stream.of(entities);

Jes*_*per 24

第二个不符合你的想法!它没有为您提供包含集合元素的流; 相反,它将为您提供一个包含单个元素的流,这是集合本身(而不是其元素).

如果需要包含集合元素的流,则必须使用entities.stream().

  • 如果他把"实体"变成一个数组,它就会有问题 (2认同)
  • @AndrewTobilko是的,如果`entities`将是一个数组,`Stream.of(...)`会工作,但在aurelius'问题中它是一个`Collection`,而不是一个数组. (2认同)
  • @Andrew Tobilko:如果`entities`是一个数组,构建流的推荐方法是`Arrays.stream(entities)`,否则,你可能会获得单个数组元素的流,具体取决于具体情况.`Stream.of`适用于在调用中直接命名的元素.当然,如果你想*单个元素流,`Stream.of(...)`是正确的选择. (2认同)

Ash*_*Ash 6

1)

Stream<String> stream1 = entities.stream()
Run Code Online (Sandbox Code Playgroud)

2)

Stream<Collection<String>> stream2 = Stream.of(entities)
Run Code Online (Sandbox Code Playgroud)

所以使用1或2

Stream<String> stream3 = Stream.of("String1", "String2")
Run Code Online (Sandbox Code Playgroud)