logo

Corte de matrices en Java

En Java, matriz rebanar es una forma de obtener un subarreglo de la matriz dada. Supongamos que a[] es una matriz. Tiene 8 elementos indexados de a[0] a a[7].

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

Imágenes de markdown

Ahora, queremos encontrar una porción del índice de la matriz desde a[3] hasta a[6]. Donde a[3] es el índice inicial y a[6] es el índice final. Por lo tanto, obtenemos lo siguiente matriz cortada :

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

En esta sección aprenderemos cómo encontrar una porción de una matriz en Java.

Existen las siguientes tres formas de encontrar una porción de una matriz:

  • Copiando elementos
  • Usando el método copyOfRange()
  • Usando la secuencia de Java 8

Analicemos cada método en detalle.

java cast int a cadena

Copiando elementos

Es un método nativo para obtener una porción de una matriz. En este método, primero encontramos el índice inicial y final de la matriz dada. Después de eso, creamos una matriz vacía (matriz en rodajas) de tamaño (índice final - índice inicial). De la matriz dada, copie los elementos (de startIndex) a la matriz cortada. Por último, imprima la matriz cortada.

Implementemos el enfoque anterior en un Java programa para obtener una matriz cortada de la matriz dada. En este programa. Usaremos una variedad de tipos primitivos.

SliceArrayExample1.java

 import java.util.Arrays; public class SliceArrayExample1 { //creating a functiion to the slice of an array public static int[] getSlice(int[] array, int startIndex, int endIndex) { // Get the slice of the Array int[] slicedArray = new int[endIndex - startIndex]; //copying array elements from the original array to the newly created sliced array for (int i = 0; i <slicedarray.length; i++) { slicedarray[i]="array[startIndex" + i]; } returns the slice of an array return slicedarray; main() method public static void main(string args[]) from which we will find int[] 56, 78, 22, 45, 90, 67, 91, 0, 31}; start index and end denotes part original to be int startindex="3," endindex="8;" get slicedarray="getSlice(array," startindex, 1); prints system.out.println('slice array: '+arrays.tostring(slicedarray)); < pre> <p> <strong>Output:</strong> </p> <pre> Slice of Array: [22, 45, 90, 67, 91, 0] </pre> <h2>By Using the copyOfRange() Method</h2> <p>The copyOfRange() method belongs to the Java Arrays class . It copies the specified range of the array to the newly created array (slice array) and returns the newly created array that contains the specified range from the original array. It takes <strong>O(n)</strong> time to create slicing of an array and <strong>O(n)</strong> space to store elements, where n is the number of elements of the resulting array.</p> <p> <strong>Syntax:</strong> </p> <pre> public static int[] copyOfRange(int[] original, int from, int to) </pre> <p>The method parses the three parameters:</p> <ul> <tr><td>original:</td> It is an array whose slice is to find. </tr><tr><td>from:</td> It is the start index. It must lie between 0 to the length of the given array. </tr><tr><td>to:</td> It is the end index. </tr></ul> <p>It throws the following exceptions:</p> <ul> <tr><td>ArrayIndexOutOfBoundsException:</td> If from is less than 0 or from is greater than the length of the specified array. </tr><tr><td>IllegalArgumentException:</td> If the parameter from is greater than to. </tr><tr><td>NullPointerException:</td> If the given array is null. </tr></ul> <p> <strong>SliceArrayExample2.java</strong> </p> <pre> import java.util.Arrays; public class SliceArrayExample2 { //function to get slice of a primitive array in Java public static int[] slice(int[] array, int startIndex, int endIndex) { // Get the slice of the Array int[] slicedArray = Arrays.copyOfRange(array, startIndex, endIndex); // return the slice return slicedArray; } public static void main(String args[]) { //get the array, startIndex and endIndex int[] array = {11, 23, 56, 90, 111, 901, 251, 800, 843}; int startIndex = 2, endIndex = 6; //get the slice of the array int[] sliceArray = slice(array, startIndex, endIndex + 1); //prints the slice of an array System.out.println(&apos;Slice of Array: &apos;+Arrays.toString(sliceArray)); } } </pre> <p> <strong>Output:</strong> </p> <pre> Slice of Array: [56, 90, 111, 901, 251] </pre> <h2>By Using Java 8 Stream</h2> <p>By using the following steps, we can find the slice of an array using the Java 8 Stream.</p> <ul> <li>First, find the startIndex and endIndex array.</li> <li>Convert the elements (that are in range) into Primitive Stream using range() method.</li> <li>Using the <strong>map()</strong> method map the specified elements from the specified array.</li> <li>By invoking the <strong>toArray()</strong> method, convert the mapped array into an array.</li> <li>Print the <strong>sliced</strong> </li> </ul> <p> <strong>SliceArrayExample3.java</strong> </p> <pre> import java.util.Arrays; import java.util.stream.IntStream; public class SliceArrayExample3 { //user defined function that finds the sslice of an specified array public static int[] findSlice(int[] array, int startIndex, int endIndex) { //getting the slice of an array and storing it in array slcarray[] //the range() method converts the elements into stream //getting the elments of the int stream using lambda expression //converting the mapped elements into sliced array using the toArray() method int[] slcarray = IntStream.range(startIndex, endIndex).map(i -&gt; array[i]).toArray(); //returns the slice of array return slcarray; } //main() method public static void main(String args[]) { //Get the array, startIndex and endIndex int[] array = {12, 45, 90, 55, 34, 100, 345, 897, 67, 123, 0, 789}; int startIndex = 5, endIndex = 10; //Get the slice of the array int[] slcarray = findSlice(array, startIndex, endIndex + 1); //Print the slice of the array System.out.println(&apos;Slice of array for the specified range is: &apos;+Arrays.toString(slcarray)); } } </pre> <p> <strong>Output:</strong> </p> <pre> Slice of array for the specified range is: [100, 345, 897, 67, 123, 0] </pre> <hr></slicedarray.length;>

Usando el método copyOfRange()

El método copyOfRange() pertenece a la clase Java Arrays. Copia el rango especificado de la matriz en la matriz recién creada (matriz de sectores) y devuelve la matriz recién creada que contiene el rango especificado de la matriz original. Se necesita En) tiempo para crear cortes de una matriz y En) espacio para almacenar elementos, donde n es el número de elementos de la matriz resultante.

cuando salio windows 7

Sintaxis:

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

El método analiza los tres parámetros:

botón tkinter
    original:Es una matriz cuyo segmento se encuentra por encontrar.de:Es el índice de inicio. Debe estar entre 0 y la longitud de la matriz dada.a:Es el índice final.

Lanza las siguientes excepciones:

    ArrayIndexOutOfBoundsExcepción:Si from es menor que 0 o from es mayor que la longitud de la matriz especificada.Argumento de excepción ilegal:Si el parámetro desde es mayor que hasta.Excepción de puntero nulo:Si la matriz dada es nula.

SliceArrayExample2.java

 import java.util.Arrays; public class SliceArrayExample2 { //function to get slice of a primitive array in Java public static int[] slice(int[] array, int startIndex, int endIndex) { // Get the slice of the Array int[] slicedArray = Arrays.copyOfRange(array, startIndex, endIndex); // return the slice return slicedArray; } public static void main(String args[]) { //get the array, startIndex and endIndex int[] array = {11, 23, 56, 90, 111, 901, 251, 800, 843}; int startIndex = 2, endIndex = 6; //get the slice of the array int[] sliceArray = slice(array, startIndex, endIndex + 1); //prints the slice of an array System.out.println(&apos;Slice of Array: &apos;+Arrays.toString(sliceArray)); } } 

Producción:

 Slice of Array: [56, 90, 111, 901, 251] 

Usando Java 8 Stream

Siguiendo los siguientes pasos, podemos encontrar la porción de una matriz usando Java 8 Stream.

  • Primero, busque la matriz startIndex y endIndex.
  • Convierta los elementos (que están dentro del rango) en Primitive Stream usando el método range().
  • Utilizando el mapa() El método asigna los elementos especificados de la matriz especificada.
  • Al invocar el a matriz() método, convierta la matriz asignada en una matriz.
  • Imprime el rebanado

SliceArrayExample3.java

 import java.util.Arrays; import java.util.stream.IntStream; public class SliceArrayExample3 { //user defined function that finds the sslice of an specified array public static int[] findSlice(int[] array, int startIndex, int endIndex) { //getting the slice of an array and storing it in array slcarray[] //the range() method converts the elements into stream //getting the elments of the int stream using lambda expression //converting the mapped elements into sliced array using the toArray() method int[] slcarray = IntStream.range(startIndex, endIndex).map(i -&gt; array[i]).toArray(); //returns the slice of array return slcarray; } //main() method public static void main(String args[]) { //Get the array, startIndex and endIndex int[] array = {12, 45, 90, 55, 34, 100, 345, 897, 67, 123, 0, 789}; int startIndex = 5, endIndex = 10; //Get the slice of the array int[] slcarray = findSlice(array, startIndex, endIndex + 1); //Print the slice of the array System.out.println(&apos;Slice of array for the specified range is: &apos;+Arrays.toString(slcarray)); } } 

Producción:

 Slice of array for the specified range is: [100, 345, 897, 67, 123, 0]