Cortar un array en Java

Shiv Yadav 12 octubre 2023
  1. Corte de arrays en Java
  2. Cortar un array duplicando elementos en Java
  3. Cortar un array usando el método copyOfRange() en Java
  4. Cortar un array usando el flujo de Java 8
Cortar un array en Java

Este artículo lo ayudará a dividir un array en un subarray en Java.

Corte de arrays en Java

Array slicing es una técnica de Java para extraer un subarray de un array más extenso.

Suponga que k[] es un array. Tiene 7 componentes, numerados de k[0] a k[6].

k[] = {5, 6, 7, 8, 9, 10, 11}

Ahora, estamos buscando una porción del índice del array entre k[2] y k[5]. El startIndex es k[2], mientras que el endIndex es k[5].

Como resultado, obtenemos la siguiente matriz cortada:

k[] = {7, 8, 9, 10}

En las siguientes secciones, aprenderemos cómo ubicar un segmento del array en Java.

Cortar un array duplicando elementos en Java

Es una forma integrada de adquirir una porción de un array. Los índices inicial y final del array proporcionada se determinan inicialmente en este procedimiento.

Después de eso, generamos un array vacía independiente del tamaño (matriz en rodajas) (endIndex - startIndex). Copie los elementos (de startIndex) del array proporcionada a el array dividida y, por último, imprima el array dividida.

Usemos la forma descrita anteriormente en un programa Java para adquirir un array dividida del array proporcionada. Utilizaremos una variedad de tipos primitivos en esta aplicación.

import java.util.Arrays;

public class Copy {
  public static int[] getSlice(int[] arr, int stIndx, int enIndx) {
    int[] sclicedArr = new int[enIndx - stIndx];

    for (int i = 0; i < sclicedArr.length; i++) {
      sclicedArr[i] = arr[stIndx + i];
    }

    return sclicedArr;
  }

  public static void main(String args[]) {
    int[] arr = {20, 65, 87, 19, 55, 93, 76, 98, 54, 21};

    int stIndx = 2, enIndx = 6;

    int[] sclicedArr = getSlice(arr, stIndx, enIndx + 1);

    System.out.println("Slice of an Array: " + Arrays.toString(sclicedArr));
  }
}

Para ejecutar el código, guarde el programa como un archivo Java y ejecútelo en su IDE de Java.

Producción:

Empalme del array Java - Salida 1

Cortar un array usando el método copyOfRange() en Java

La clase Java Array contiene el método copyOfRange(). Replica el rango indicado del array en un array recién formada (matriz de segmentos) y devuelve el array recién producida con el rango especificado del array original.

Cortar un array requiere un tiempo O(n) y un espacio O(n) para almacenar los elementos, donde n es el número de elementos en el array resultante.

Sintaxis:

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

Los siguientes 3 parámetros son analizados por el método:

  • original: Es un array con un slice que hay que encontrar.
  • from: Es el índice de la primera página. Debe estar en el rango de 0 a la longitud del array.
  • to: Es el último índice.

Se lanzan las siguientes excepciones:

Si el índice de inicio es menor que 0 o mayor que la longitud del array original, se lanzará una ArrayIndexOutOfBoundsException. Si el índice inicial es más significativo que el índice final, se lanzará una IllegalArgumentException.

Si el array especificada es nula, se lanzará una NullPointerException.

import java.util.Arrays;

public class Copy1 {
  public static int[] slice(int[] arr, int stIndx, int enIndx) {
    int[] sclicedArr = Arrays.copyOfRange(arr, stIndx, enIndx);

    return sclicedArr;
  }

  public static void main(String args[]) {
    int[] arr = {20, 65, 87, 19, 55, 93, 76, 98, 54, 21};
    int stIndx = 3, enIndx = 8;

    int[] sliceArray = slice(arr, stIndx, enIndx + 1);

    System.out.println("Slice of Array: " + Arrays.toString(sliceArray));
  }
}

Para ejecutar el código, guarde el programa como un archivo Java y ejecútelo en su IDE de Java.

Producción:

Empalme del array Java - Salida 2

Cortar un array usando el flujo de Java 8

Podemos usar Java 8 Stream para descubrir la porción de un array siguiendo las instrucciones a continuación.

  • Encuentre primero las arrays de índice inicial y final.
  • Usando la función range(), convierta los elementos (los que están dentro del rango) en Primitive Stream.
  • Utilice la función map() para mapear los elementos provistos de un array.
  • Convierta el array mapeada en un array utilizando la función toArray().
  • Imprime el array cortada.
import java.util.Arrays;
import java.util.stream.IntStream;

public class NewClice {
  public static int[] findSlice(int[] arr, int stIndx, int enIndx) {
    int[] slice_arr = IntStream.range(stIndx, enIndx).map(i -> arr[i]).toArray();

    return slice_arr;
  }

  public static void main(String args[]) {
    int[] arr = {20, 65, 87, 19, 55, 93, 76, 98, 54, 21, 657};
    int stIndx = 2, enIndx = 8;

    int[] slice_arr = findSlice(arr, stIndx, enIndx + 1);

    System.out.println("Slice of array for the specific range is: " + Arrays.toString(slice_arr));
  }
}

Para ejecutar el código, guarde el programa como un archivo Java y ejecútelo en su IDE de Java.

Empalme del array Java - Salida 3

Autor: Shiv Yadav
Shiv Yadav avatar Shiv Yadav avatar

Shiv is a self-driven and passionate Machine learning Learner who is innovative in application design, development, testing, and deployment and provides program requirements into sustainable advanced technical solutions through JavaScript, Python, and other programs for continuous improvement of AI technologies.

LinkedIn

Artículo relacionado - Java Array