Java数组切片方法总结,可以通过各种方式在两个指定索引之间获得Java数组的一部分。
通过复制内容
一种方法是创建一个空数组,然后将原始数组的内容从起始索引复制到endIndex。
代码演示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import java.util.Arrays; public class SlicingAnArray { public static int[] sliceArray(int array[], int startIndex, int endIndex ){ int size = endIndex-startIndex; int part[] = new int[size]; //Copying the contents of the array for(int i=0; i<part.length; i++){ part[i] = array[startIndex+i]; } return part; } public static void main(String args[]){ int intArray[] = {12, 14, 58, 225, 56, 96 , 3, 45, 8 }; intArray = sliceArray(intArray, 3, 7); System.out.println(Arrays.toString(intArray)); } } |
输出结果
1 |
[225, 56, 96, 3] |
使用copyOfRange()方法
java.util.Arrays类的copyOfRange()方法接受一个数组,两个整数分别代表开始和结束索引,并返回位于指定索引之间的给定数组的切片。
代码演示
1 2 3 4 5 6 7 8 |
import java.util.Arrays; public class SlicingAnArray { public static void main(String args[]){ int intArray[] = {12, 14, 58, 225, 56, 96 , 3, 45, 8 }; intArray = Arrays.copyOfRange(intArray, 3, 7); System.out.println(Arrays.toString(intArray)); } } |
输出结果
1 |
[225, 56, 96, 3] |
使用Java8流
代码演示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import java.util.Arrays; import java.util.stream.IntStream; public class SlicingAnArray { public static int[] sliceArray(int array[], int startIndex, int endIndex ){ int size = endIndex-startIndex; int part[] = new int[size]; IntStream stream = IntStream.range(startIndex, endIndex).map(i->array[i]); part = stream.toArray(); //Copying the contents of the array for(int i=0; i<part.length; i++){ part[i] = array[startIndex+i]; } return part; } public static void main(String args[]){ int intArray[] = {12, 14, 58, 225, 56, 96 , 3, 45, 8 }; intArray = sliceArray(intArray, 3, 7); System.out.println(Arrays.toString(intArray)); } } |
输出结果
1 |
[225, 56, 96, 3] |
0