我有一个问题,为什么String[] args
变量没有forEach
方法?由于forEach
方法实现了Serializable,因此找不到任何类型不是Serializable或Collection的信息。
例如,我有简单的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);
}
}
为什么不可能像这样简单呢?
args.forEach(System.out::println);
参考方案
简短的答案:数组上没有定义forEach
方法。
更长的答案:因为不需要它。数组类型(使用[]
而不是List<>
)表示内存中的低级结构,更适合于低级优化而不是高级功能样式代码。机器的硬件非常类似于C之类的命令式,有状态的样式,而不是Haskell之类的功能性无状态样式。因此,在创建像基本数组这样的较低级别的数据结构时,为其提供更高级的功能并不一定有意义。如果您确实需要forEach()
方法,请使用Arrays.asList()
,Arrays.stream()
或List.of()
(取决于Java版本)简单地包装它。
我有一个字符串4.9.14_05_29_16_21,我只需要获取4.9。数字各不相同,所以我不能简单地获得此char数组的前三个元素。我必须找到最正确的.并将其子字符串化直到那里。我来自Python,因此我将展示Python的实现方法。def foobar(some_string): location = some_string.rfind('.&…
Java-固定大小的列表与指定初始容量的列表之间的差异 - java我在理解这一点上遇到了问题。当我们做 List<Integer> list = Arrays.asList(array); 我们不能在该列表上使用添加,删除之类的方法。我知道Arrays.asList()返回固定大小的列表。我不明白的是,如果我们创建一个具有指定初始容量的列表,例如List<Integer> list2 = new A…
Java string.hashcode()提供不同的值 - java我已经在这个问题上停留了几个小时。我已经注释掉所有代码,认为这与数组超出范围有关,但是这种情况仍在发生。我正在尝试使用扫描仪从文件中读取输入,存储数据并稍后使用哈希码获取该数据。但是哈希值不断变化。public static void main(String[] args) { //only prior code is to access data char…
Java-搜索字符串数组中的字符串 - java在Java中,我们是否有任何方法可以发现特定字符串是字符串数组的一部分。我可以避免出现一个循环。例如String [] array = {"AA","BB","CC" }; string x = "BB" 我想要一个if (some condition to tell wheth…
从方法返回数组-Java - javaprivate static Coordinate[] getCircleCoordintaes() { Coordinate coordinates[] = {new Coordinate(0, 0)}; return coordinates; } 以上程序工作正常。在上面的程序中,返回的坐标数组首先初始化了数组使用这条线Coordinate coordi…