logo

Affettamento di array in Java

In Java, array affettare è un modo per ottenere un sottoarray dell'array specificato. Supponiamo che a[] sia un array. Ha 8 elementi indicizzati da a[0] a a[7].

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

Java comparabile

Ora vogliamo trovare una porzione dell'indice dell'array da a[3] a a[6]. Dove a[3] è startIndex e a[6] è endIndex. Pertanto, otteniamo quanto segue matrice affettata :

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

In questa sezione impareremo come trovare una parte di un array in Java.

Esistono tre modi seguenti per trovare una sezione di un array:

  • Copiando gli elementi
  • Utilizzando il metodo copyOfRange()
  • Utilizzo di Java 8Stream

Discutiamo ciascun metodo in dettaglio.

come disattivare la modalità sviluppatore

Copiando gli elementi

È un metodo nativo per ottenere una porzione di un array. In questo metodo, innanzitutto, troviamo l'indice iniziale e finale dell'array specificato. Successivamente, creiamo un array vuoto (array a fette) di dimensione (endIndex - startIndex). Dall'array specificato, copia gli elementi (da startIndex) nell'array suddiviso. Alla fine, stampa l'array affettato.

Implementiamo l'approccio di cui sopra in a Giava programma per ottenere un array suddiviso in parti dell'array specificato. In questo programma. useremo un array di tipi primitivi.

SliceArrayEsempio1.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;>

Utilizzando il metodo copyOfRange()

Il metodo copyOfRange() appartiene alla classe Java Arrays. Copia l'intervallo specificato dell'array nell'array appena creato (array di sezioni) e restituisce l'array appena creato che contiene l'intervallo specificato dall'array originale. Prende SU) tempo per creare l'affettamento di un array e SU) spazio per memorizzare gli elementi, dove n è il numero di elementi dell'array risultante.

array di programmazione Java

Sintassi:

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

Il metodo analizza i tre parametri:

    originale:È un array la cui fetta deve essere trovata.da:E' l'indice di partenza. Deve essere compreso tra 0 e la lunghezza dell'array specificato.A:È l'indice finale.

Genera le seguenti eccezioni:

string.format in Java
    Indice della Matrice Fuori Dai Limiti d'Eccezione:Se from è inferiore a 0 o from è maggiore della lunghezza dell'array specificato.IllegalArgumentException:Se il parametro da è maggiore di a.NullPointerException:Se l'array fornito è nullo.

SliceArrayEsempio2.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)); } } 

Produzione:

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

Utilizzando Java 8 Stream

Utilizzando i passaggi seguenti, possiamo trovare la sezione di un array utilizzando Java 8 Stream.

  • Innanzitutto, trova l'array startIndex e endIndex.
  • Converti gli elementi (che sono nell'intervallo) in Primitive Stream utilizzando il metodo range().
  • Usando il carta geografica() Il metodo mappa gli elementi specificati dall'array specificato.
  • Invocando il toArray() metodo, convertire l'array mappato in un array.
  • Stampa il affettato

SliceArrayEsempio3.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)); } } 

Produzione:

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