如何从Java中的另一个数组创build一个子数组?
如何从另一个数组创build一个子数组? 有没有一种方法,从第一个数组的索引,如:
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); } }
您可以使用
JDK> 1.5
Arrays.copyOfRange(Object[] src, int from, int to)
的Javadoc
JDK <= 1.5
System.arraycopy(Object[] src, int srcStartIndex, Object[] dest, int dstStartIndex, int lengthOfCopiedIndices);
的Javadoc
Arrays.copyOfRange(..)
是在Java 1.6中添加的。 所以也许你没有最新版本。 如果无法升级,请查看System.arraycopy(..)
是的,它叫做System.arraycopy(Object,int,Object,int,int) 。
尽pipe如此,它仍然会在某个地方执行一个循环,除非这个可以通过JIT(在这种情况下,循环在CPU内部)优化成像REP STOSW
这样的东西。
int[] src = new int[] {1, 2, 3, 4, 5}; int[] dst = new int[3]; System.arraycopy(src, 1, dst, 0, 3); // Copies 2, 3, 4 into dst
使用java.util.Arrays类的copyOfRange方法:
int[] newArray = Arrays.copyOfRange(oldArray, startIndex, endIndex);
更多细节:
链接到类似的问题
使用可在此链接下载的Apache ArrayUtils ,您可以轻松使用该方法
subarray(boolean[] array, int startIndexInclusive, int endIndexExclusive)
“布尔”只是一个例子,所有原始types的java都有方法
代码是正确的,所以我猜你正在使用一个较旧的JDK。 该方法的javadoc说,自1.6以来一直在那里。 在命令行中input:
java -version
我猜你没有运行1.6
int newArrayLength = 30; int[] newArray = new int[newArrayLength]; System.arrayCopy(oldArray, 0, newArray, 0, newArray.length);
我在使用java之前版本1.6使用System.arraycopy()
来代替。 或者升级你的环境。