假设我有一个来自MyClass
类的对象数组:
MyClass myClassArray[] = {
new MyClass(0, 1),
new MyClass(2, 3),
new MyClass(4, 5),
new MyClass(6, 7)
};
此处,MyClass
构造函数填写两个字段,我们称之为field1
和field2
。现在假设我想在field1
中的每个对象中填入一个包含myClassArray
值的数组(因此数组将包含值0, 2, 4, 6
)。以下不起作用:
field1Array = myClassArray.getField1();
是否有快速的1行方式使用属于原始数组中对象的方法的返回码来填充新数组?显然,我可以使用for
循环来完成此操作,但我宁愿使用该语言的功能(如果存在的话)。
答案 0 :(得分:4)
除非您使用的是Java 8+,否则需要循环才能将lambda expressions添加到该语言中,在这种情况下,您可以将数组映射到新数组:
int[] field1Array = Arrays
.stream(myClassArray)
.mapToInt(MyClass::getField1)
.toArray();
这无疑是理论上的答案,因为Java 8将在明年第一季度之前正式发布。
答案 1 :(得分:3)
目前除了普通的简单for
循环之外,没有其他语言功能。
对于Java 8,可能有lambda表达式,也许是Collection
的一些辅助方法,可以做你想要的。但Java 8尚未发布。
答案 2 :(得分:1)
不,据我所知,在Java中,除了使用循环之外,没有办法在数组的每个元素上调用方法。
答案 3 :(得分:1)
int[] field1 = new int[myClassArray.size()];
for(int i = 0; i < myClassArray.size(); i++){
field1[i] = myClassArray[i].getField1();
}
你的方法必须使用一个循环(而在这里),因为没有一个循环就无法运行。当然你可以逐个处理数组的每个元素。但这对阵列中相当大的元素来说将是一场噩梦。