我想知道为什么Java 8不包含对数组使用流的支持,就像它在集合上使用流一样。你可以写为什么Java 8没有“myArray.stream()”函数?
Collection<String> myCollection = new ArrayList<String>();
Stream<String> stream = myCollection.stream();
,但你不能写:
String[] myArray = new String[] {};
Stream<String> stream = myArray.stream();
我知道的实用方法Arrays.stream
的,所以这是可以用来代替:
Stream<String> stream = Arrays.stream(myArray);
但它给我留下想知道为什么这种笨拙的静态实用方法调用在lambda表达式允许简单编码这么多的上下文中是必需的。我意识到Collection
(基于对象/接口的)世界与array
更“本土”世界之间的显着差异。
谁能详细说明这一点?
有人会比我回答得更好,但是数组是Java中特殊的对象,这不是来自像'Collection'这样的特定类/接口。你没有'Array'而是'String []',这是特定于数组的 –
AxelH
为什么'stream'特别是? “Collection”接口中的其他方法呢? –