如何从另一个数组创建一个子数组?是否有一个方法从第一个数组获取索引,如:
methodName(object array, int start, int end)
我不想过去制作循环并让我的程序受损 .
我一直在收到错误:
找不到符号方法copyOfRange(int [],int,int)
这是我的代码:
import java.util.*;
public class testing
{
public static void main(String [] arg)
{
int[] src = new int[] {1, 2, 3, 4, 5};
int b1[] = Arrays.copyOfRange(src, 0, 2);
}
}
9 回答
代码是正确的,所以我猜你使用的是较旧的JDK . 该方法的javadoc说它从1.6开始就存在 . 在命令行类型:
我猜你没有运行1.6
我在1.6版本之前使用java而不是使用
System.arraycopy()
. 或升级您的环境 .使用Apache ArrayUtils可在this link下载,您可以轻松使用该方法
“boolean”只是一个例子,有所有原语java类型的方法
您可以使用
JDK> 1.5
Javadoc
JDK <= 1.5
Javadoc
在Java 1.6中添加了
Arrays.copyOfRange(..)
. 所以也许你不能升级,请看System.arraycopy(..)
使用java.util.Arrays类中的copyOfRange方法:
int[] newArray = Arrays.copyOfRange(oldArray, startIndex, endIndex);
更多细节:
Link to similar question
是的,它被称为System.arraycopy(Object, int, Object, int, int) .
它仍然会在某处执行循环,除非这可以通过JIT优化为
REP STOSW
(在这种情况下循环在CPU内部) .我同意上面的所有答案 . Java 8 Streams还有一个很好的方法:
这样做的好处是,它可以用于许多不同类型的“src”数组,并有助于改进对流的写入管道操作 .
不是特别关于这个问题,但是例如,如果源数组是
double
并且我们想要获取子数组的average()
: