logo

Array-slicing in Java

Op Java: array snijden is een manier om een ​​subarray van de gegeven array te verkrijgen. Stel dat a[] een array is. Het heeft 8 elementen, geïndexeerd van a[0] tot a[7].

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

java-string concat

Nu willen we een deel van de array-index vinden van a[3] tot a[6]. Waar a[3] de startIndex is en a[6] de endIndex. Daarom krijgen we het volgende gesneden reeks :

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

In dit gedeelte zullen we leren hoe je een deel van een array in Java kunt vinden.

Er zijn de volgende drie manieren om een ​​segment van een array te vinden:

  • Door elementen te kopiëren
  • Door de copyOfRange()-methode te gebruiken
  • Java 8 Stream gebruiken

Laten we elke methode in detail bespreken.

converteer int naar dubbele Java

Door elementen te kopiëren

Het is een native methode om een ​​deel van een array te verkrijgen. Bij deze methode vinden we eerst de begin- en eindindex van de gegeven array. Daarna maken we een lege array (gesneden array) van grootte (eindIndex - startIndex). Kopieer vanuit de gegeven array de elementen (van startIndex) naar de gesegmenteerde array. Druk ten slotte de gesneden array af.

Laten we de bovenstaande aanpak implementeren in a Java programma om een ​​gesneden array van de gegeven array te krijgen. In dit programma. we zullen een reeks primitieve typen gebruiken.

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

Door de copyOfRange()-methode te gebruiken

De methode copyOfRange() behoort tot de klasse Java Arrays. Het kopieert het opgegeven bereik van de array naar de nieuw gemaakte array (slice-array) en retourneert de nieuw gemaakte array die het opgegeven bereik uit de originele array bevat. Het duurt Op) tijd om het segmenteren van een array te maken en Op) ruimte om elementen op te slaan, waarbij n het aantal elementen van de resulterende array is.

amisha patel

Syntaxis:

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

De methode parseert de drie parameters:

    origineel:Het is een array waarvan de slice moet worden gevonden.van:Het is de startindex. Het moet tussen 0 en de lengte van de gegeven array liggen.naar:Het is de eindindex.

Het genereert de volgende uitzonderingen:

    ArrayIndexOutOfBoundsException:Als from kleiner is dan 0 of from groter is dan de lengte van de opgegeven array.Illegaal argumentUitzondering:Als de parameter from groter is dan to.NullPointerException:Als de gegeven array nul is.

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

Uitgang:

java-tekenreeks naar boolean
 Slice of Array: [56, 90, 111, 901, 251] 

Door Java 8 Stream te gebruiken

Door de volgende stappen te gebruiken, kunnen we het segment van een array vinden met behulp van de Java 8 Stream.

  • Zoek eerst de array startIndex en endIndex.
  • Converteer de elementen (die binnen bereik liggen) naar Primitive Stream met behulp van de range()-methode.
  • De ... gebruiken kaart() methode wijst de gespecificeerde elementen uit de gespecificeerde array toe.
  • Door een beroep te doen op de toArray() methode converteert u de toegewezen array naar een array.
  • Druk de gesneden

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

Uitgang:

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