Daw*_*wid 6 java arrays string foreach
我有一个问题,为什么String[] args变量没有forEach方法?我找不到任何类型不是Serializable或Collection的信息,因为forEach方法实现了Serializable。
例如,我有简单的Java主类。如果要使用forEach方法,则必须先导入Arrays类,然后stream使用forEach如下所示的使用方法:
import java.util.Arrays;
public class MyClass {
public static void main(String[] args) {
Arrays.stream(args).forEach(System.out::println);
}
}
Run Code Online (Sandbox Code Playgroud)
为什么不可能像这样简单呢?
args.forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)
cam*_*024 14
简短的答案:数组上没有forEach定义方法。
更长的答案:因为不需要它。数组类型(使用[],不是List<>)表示内存中的低级结构,更适合于低级优化而不是高级功能样式的代码。机器的硬件非常类似于C之类的命令式,有状态的样式,而不是Haskell之类的功能性无状态样式。因此,在创建较低级别的数据结构(如基本数组)时,为其提供更高级的功能并不一定有意义。如果你真的想要一个forEach()方法,用平凡包起来Arrays.asList(),Arrays.stream()或List.of()(取决于Java版本)。
| 归档时间: |
|
| 查看次数: |
177 次 |
| 最近记录: |