Home  >  Article  >  Java  >  What are the methods of array slicing in Java?

What are the methods of array slicing in Java?

王林
王林forward
2023-05-20 18:22:193044browse

1. Question

Array slicing is a method of obtaining a subarray of a given array. Suppose, a[] is an array. It has 8 elements, indexed from a[0] to a[7]

int a[] = {8, 9, 4, 6, 0, 11, 45, 21}

We need to find a subset of the array index, ranging from a[3] to a[6]. startIndex corresponds to a[3], and endIndex corresponds to a[6]. Therefore, we get the following slice

a[] = {6, 0, 11, 45}

There are three ways to find the slice of an array:

  1. By copying elements

  2. By using the copyOfRange() method

  3. Using Java 8 streams

2. Method

1) By copying the elements

  • First, we find the start and end index of the given array.

  • After that, we create an empty array (slice array) of size (endIndex - startIndex).

  • From the given array, copies the elements (from startIndex) to the slice array. Finally, print the slice array.

public class Test {
    public static void main(String[] args) {
        int[] array = {0,1,2,3,4,5,6,7,8,9};
        int startIndex = 3, endIndex = 8;
        int[] slicedArray = getSlice(array, startIndex, endIndex + 1);
        System.out.println("Slice of Array: "+ Arrays.toString(slicedArray));
    }
    public static int[] getSlice(int[] array, int startIndex, int endIndex)
    {
        int[] slicedArray = new int[endIndex - startIndex];
        //将数组元素从原始数组复制到新创建的切片数组
        for (int i = 0; i < slicedArray.length; i++)
        {
            slicedArray[i] = array[startIndex + i];
        }
        return slicedArray;
    }
}

The results are as follows:

Slice of Array: [3, 4, 5, 6, 7, 8]

2) By using the copyOfRange() method

  • copyOfRange() Method belongs to Java Arrays class.

  • It copies the specified range of the array into a newly created array (slice array) and returns the newly created array containing the specified range from the original array.

  • Creating an array slice takes O(n) time, and storing elements requires O(n) space, where n is the number of elements in the result array.

public static int[] copyOfRange(int[] original, int from, int to)

It throws the following exception:

  • ArrayIndexOutOfBoundsException: If from is less than 0 or from is greater than the length of the specified array .

  • IllegalArgumentException: If the argument from is greater than to.

  • NullPointerException: If the given array is empty.

public class Test {
    public static void main(String[] args) {
        int[] array = {0,1,2,3,4,5,6,7,8,9};
        int startIndex = 3, endIndex = 8;
        int[] slicedArray = getSlice(array, startIndex, endIndex + 1);
        System.out.println("Slice of Array: "+ Arrays.toString(slicedArray));
    }
    public static int[] getSlice(int[] array, int startIndex, int endIndex)
    {
        int[] slicedArray = Arrays.copyOfRange(array, startIndex, endIndex);
        return slicedArray;
    }
}

The result is as follows:

Slice of Array: [3, 4, 5, 6, 7, 8]

3) Using Java 8 Streams

By using the following steps

  • We can find slices of arrays using Java 8 Stream.

  • First, find the startIndex and endIndex arrays.

  • Use the range() method to convert elements (within a range) to the original stream.

  • Use the map() method to map the specified element in the specified array.

  • Convert the mapped array to an array by calling the toArray() method. Print slice

public class Test {
    public static void main(String[] args) {
        int[] array = {0,1,2,3,4,5,6,7,8,9};
        int startIndex = 3, endIndex = 8;
        int[] slicedArray = getSlice(array, startIndex, endIndex + 1);
        System.out.println("Slice of Array: "+ Arrays.toString(slicedArray));
    }
    public static int[] getSlice(int[] array, int startIndex, int endIndex)
    {
        //获取数组的切片并将其存储在数组 slcarray[] 中
        // range() 方法将元素转换为流
        // 使用 lambda 表达式获取 int 流的元素
        // 使用 toArray() 方法将映射元素转换为切片数组
        int[] slcarray = IntStream.range(startIndex, endIndex).map(i -> array[i]).toArray();
        return slcarray;
    }
}

The result is as follows:

Slice of Array: [3, 4, 5, 6, 7, 8]

The above is the detailed content of What are the methods of array slicing in Java?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:yisu.com. If there is any infringement, please contact admin@php.cn delete