如何从另一个数组创建子数组?是否有一个方法从第一个数组中获取索引,例如:
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);
}
}
是的,它叫做系统。arraycopy(对象,int,对象,int, int)。
它仍然会在某个地方执行循环,除非这可以被JIT优化成类似REP STOSW的东西(在这种情况下,循环是在CPU内部)。
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
JDK >= 1.8
我同意上面所有的答案。Java 8 Streams还有一个很好的方法:
int[] subArr = IntStream.range(startInclusive, endExclusive)
.map(i -> src[i])
.toArray();
这样做的好处是,它可以用于许多不同类型的“src”数组,并有助于改进流上的写入管道操作。
这个问题并不特别,但例如,如果源数组是double[],我们想对子数组求平均():
double avg = IntStream.range(startInclusive, endExclusive)
.mapToDouble(index -> src[index])
.average()
.getAsDouble();