logo

Découpage de tableaux en Java

En Java, tableau trancher est un moyen d'obtenir un sous-tableau du tableau donné. Supposons que a[] soit un tableau. Il comporte 8 éléments indexés de a[0] à a[7].

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

trimestres de l'année

Maintenant, nous voulons trouver une tranche de l'index du tableau de a[3] à a[6]. Où a[3] est le startIndex et a[6] est le endIndex. On obtient donc ce qui suit tableau découpé en tranches :

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

Dans cette section, nous apprendrons comment trouver une tranche d'un tableau en Java.

Il existe les trois manières suivantes pour rechercher une tranche d'un tableau :

  • En copiant des éléments
  • En utilisant la méthode copyOfRange()
  • Utilisation du flux Java 8

Discutons de chaque méthode en détail.

strint à int

En copiant des éléments

C'est une méthode native pour obtenir une tranche d'un tableau. Dans cette méthode, nous trouvons d’abord l’index de début et de fin du tableau donné. Après cela, nous créons un tableau vide (tableau découpé) de taille (endIndex - startIndex). À partir du tableau donné, copiez les éléments (de startIndex) dans le tableau découpé. Enfin, imprimez le tableau découpé.

Implémentons l'approche ci-dessus dans un Java programme pour obtenir un tableau découpé en tranches du tableau donné. Dans ce programme. nous utiliserons un tableau de types primitifs.

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

En utilisant la méthode copyOfRange()

La méthode copyOfRange() appartient à la classe Java Arrays. Il copie la plage spécifiée du tableau dans le tableau nouvellement créé (tableau de tranches) et renvoie le tableau nouvellement créé qui contient la plage spécifiée du tableau d'origine. Ça prend Sur) le temps de créer le découpage d'un tableau et Sur) espace pour stocker les éléments, où n est le nombre d'éléments du tableau résultant.

ajouter au tableau java

Syntaxe:

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

La méthode analyse les trois paramètres :

    original:C'est un tableau dont la tranche est à trouver.depuis:C'est l'indice de départ. Il doit être compris entre 0 et la longueur du tableau donné.à:C'est l'index de fin.

Il lève les exceptions suivantes :

    ArrayIndexOutOfBoundsException :Si from est inférieur à 0 ou si from est supérieur à la longueur du tableau spécifié.Exception d'argument illégal:Si le paramètre from est supérieur à to.NullPointerException :Si le tableau donné est nul.

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

Sortir:

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

En utilisant Java 8 Stream

En suivant les étapes suivantes, nous pouvons trouver la tranche d'un tableau à l'aide de Java 8 Stream.

  • Tout d’abord, recherchez les tableaux startIndex et endIndex.
  • Convertissez les éléments (qui sont à portée) en Primitive Stream à l’aide de la méthode range().
  • En utilisant le carte() La méthode mappe les éléments spécifiés du tableau spécifié.
  • En invoquant le versArray() méthode, convertissez le tableau mappé en tableau.
  • Imprimez le découpé en tranches

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

Sortir:

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