为什么toList()不直接存在于Java 8 Stream

时间:2015-07-19 12:50:40

标签: java java-8 java-stream

据我所知,Java 8 Stream提供了.collect方法将Stream转换为我们选择的任何集合/数据结构,并且它本质上非常通用。了解Stream可能源自非收集对象/资源。但从使用角度来看,将Stream转换为List / Set非常自然。

Stream已经提供toArray()方法转换为数组,那么为什么不toList()toSet()

1 个答案:

答案 0 :(得分:5)

因为你不知道List实现会是什么样的:

  • 会变得可变吗?
  • 你能改变它的大小吗?
  • 等等。

事实上,even Collectors.toList() makes no guarantee

  

对返回的List的类型,可变性,可序列化或线程安全性没有任何保证;如果需要更多地控制返回的List,请使用toCollection(Supplier)。

因此,提供通用.toList()方法适合某些人的某些用法,但它永远不能适合所有人的所有用法。当然,这同样适用于Collectors.toSet()

阵列不是问题:你知道你可以用它们做些什么。