有没有快速的方法从另一个数组创建一个返回代码数组?

时间:2013-08-05 12:01:32

标签: java arrays

假设我有一个来自MyClass类的对象数组:

MyClass myClassArray[] = {
  new MyClass(0, 1),
  new MyClass(2, 3),
  new MyClass(4, 5),
  new MyClass(6, 7)
};

此处,MyClass构造函数填写两个字段,我们称之为field1field2。现在假设我想在field1中的每个对象中填入一个包含myClassArray值的数组(因此数组将包含值0, 2, 4, 6)。以下不起作用:

field1Array = myClassArray.getField1();

是否有快速的1行方式使用属于原始数组中对象的方法的返回码来填充新数组?显然,我可以使用for循环来完成此操作,但我宁愿使用该语言的功能(如果存在的话)。

4 个答案:

答案 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();
}

你的方法必须使用一个循环(而在这里),因为没有一个循环就无法运行。当然你可以逐个处理数组的每个元素。但这对阵列中相当大的元素来说将是一场噩梦。