Cómo obtener una porción de una array primitiva en Java

Dada una array primitiva, la tarea es obtener una porción de esta array en Java, utilizando el índice inicial y final.

Ejemplos:

Input: arr[] = {1, 2, 3, 4, 5}, startIndex = 2, endIndex = 4
Output: {3, 4, 5}

Input: arr[] = {1, 2, 3, 4, 5}, startIndex = 0, endIndex = 1
Output: {1, 2}
  • Método 1 : método ingenuo.
    1. Obtenga el Array y el startIndex y el endIndex.
    2. Crear y vaciar una array primitiva de tamaño endIndex-startIndex.
    3. Copie los elementos de startIndex a endIndex de la array original a la array de sectores.
    4. Devuelve o imprime la porción de la array.

    A continuación se muestra la implementación del enfoque anterior:

    // Java program to Get a Slice
    // of a Primitive Array
      
    import java.util.Arrays;
      
    class GFG {
        // Function to get slice of a primitive array in Java
        public static int[] getSliceOfArray(int[] arr, 
                                         int start, int end)
        {
      
            // Get the slice of the Array
            int[] slice = new int[end - start];
      
            // Copy elements of arr to slice
            for (int i = 0; i < slice.length; i++) {
                slice[i] = arr[start + i];
            }
      
            // return the slice
            return slice;
        }
        public static void main(String[] args)
        {
      
            // Get the array, startIndex and endIndex
            int[] arr = { 1, 2, 3, 4, 5 };
            int start = 2, end = 4;
      
            // Get the slice of the array
            int[] slice = getSliceOfArray(arr, start, end + 1);
      
            // Print the slice of the array
            System.out.println(Arrays.toString(slice));
        }
    }
    Producción:

    [3, 4, 5]
    
  • Método 2 : Usar el método Arrays.copyOfRange() .
    1. Obtenga el Array y el startIndex y el endIndex.
    2. Obtenga el segmento usando el método Arrays.copyOfRange().
    3. Devuelve o imprime la porción de la array.

    A continuación se muestra la implementación del enfoque anterior:

    // Java program to Get a Slice
    // of a Primitive Array
      
    import java.util.Arrays;
      
    class GFG {
        // Function to get slice of a primitive array in Java
        public static int[] getSliceOfArray(int[] arr,
                                int startIndex, int endIndex)
        {
      
            // Get the slice of the Array
            int[] slice = Arrays
                              .copyOfRange(
      
                                  // Source
                                  arr,
      
                                  // The Start index
                                  startIndex,
      
                                  // The end index
                                  endIndex);
      
            // return the slice
            return slice;
        }
        public static void main(String[] args)
        {
      
            // Get the array, startIndex and endIndex
            int[] arr = { 1, 2, 3, 4, 5 };
            int start = 2, end = 4;
      
            // Get the slice of the array
            int[] slice = getSliceOfArray(arr, start, end + 1);
      
            // Print the slice of the array
            System.out.println(Arrays.toString(slice));
        }
    }
    Producción:

    [3, 4, 5]
    
  • Método 3 : Uso de flujos de Java 8
    1. Obtenga el Array y el startIndex y el endIndex.
    2. Convierta el rango especificado de elementos de startIndex a endIndex a Primitive Stream usando el método range().
    3. Asigne los elementos especificados de la array original utilizando el método map().
    4. Convierta la array asignada en una array utilizando el método toArray().
    5. Devuelve o imprime la porción de la array.

    A continuación se muestra la implementación del enfoque anterior:

    // Java program to Get a Slice
    // of a Primitive Array
      
    import java.util.Arrays;
    import java.util.stream.IntStream;
      
    class GFG {
      
        // Function to get slice of a primitive array in Java
        public static int[] getSliceOfArray(int[] arr, 
                                  int startIndex, int endIndex)
        {
      
            // Get the slice of the Array
            int[] slice = IntStream
      
                              // Convert the specified elements
                              // of array into IntStream
                              .range(startIndex, endIndex)
      
                              // Lambda expression to get
                              // the elements of IntStream
                              .map(i -> arr[i])
      
                              // Convert the mapped elements
                              // into the slice array
                              .toArray();
      
            // return the slice
            return slice;
        }
        public static void main(String[] args)
        {
      
            // Get the array, startIndex and endIndex
            int[] arr = { 1, 2, 3, 4, 5 };
            int start = 2, end = 4;
      
            // Get the slice of the array
            int[] slice = getSliceOfArray(arr, start, end + 1);
      
            // Print the slice of the array
            System.out.println(Arrays.toString(slice));
        }
    }
    Producción:

    [3, 4, 5]
    

Publicación traducida automáticamente

Artículo escrito por RishabhPrabhu y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *