Collections 入门

使用方法引用将流转换为类型化数组。

✕ Pre-Streams
List<String> list = getNames();
String[] arr = new String[list.size()];
for (int i = 0; i < list.size(); i++) {
    arr[i] = list.get(i);
}
✓ Java 8+
String[] arr = getNames().stream()
    .filter(n -> n.length() > 3)
    .toArray(String[]::new);
发现此代码有问题? 告诉我们。
🎯

类型安全

没有 Object[] 转换——数组类型是正确的。

📏

简洁

方法引用语法简洁而具有表达力。

🚫

无 System.arraycopy

不需要中间 Object[] 和数组复制。

旧方式
手动数组复制
现代方式
toArray(generator)
自 JDK
8
难度
入门
类型化流 toArray
可用

自 JDK 8 起广泛可用(2014 年 3 月)

toArray(IntFunction) 方法从流创建正确类型化的数组。传递 String[]::new 获取 String[],而非 Object[]。

分享 𝕏 🦋 in