logo

Array-Slicing in Java

In Java Array schneiden ist eine Möglichkeit, ein Unterarray des angegebenen Arrays abzurufen. Angenommen, a[] ist ein Array. Es verfügt über 8 Elemente, die von a[0] bis a[7] indiziert sind.

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

Base64-Dekodierung in js

Jetzt wollen wir einen Ausschnitt des Array-Index von a[3] bis a[6] finden. Dabei ist a[3] der StartIndex und a[6] der EndIndex. Daher erhalten wir Folgendes Sliced-Array :

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

In diesem Abschnitt werden wir lernen So finden Sie einen Ausschnitt eines Arrays in Java.

Es gibt die folgenden drei Möglichkeiten, ein Segment eines Arrays zu finden:

  • Durch Kopieren von Elementen
  • Mithilfe der Methode copyOfRange()
  • Verwendung von Java 8 Stream

Lassen Sie uns jede Methode im Detail besprechen.

Entfernen Sie den NPM-Cache

Durch Kopieren von Elementen

Es handelt sich um eine native Methode zum Abrufen eines Ausschnitts eines Arrays. Bei dieser Methode ermitteln wir zunächst den Start- und Endindex des angegebenen Arrays. Danach erstellen wir ein leeres Array (Sliced ​​Array) der Größe (endIndex - startIndex). Kopieren Sie die Elemente (von startIndex) aus dem angegebenen Array in das Sliced-Array. Drucken Sie zum Schluss das Sliced-Array.

Lassen Sie uns den obigen Ansatz in a implementieren Java Programm, um ein Sliced-Array des angegebenen Arrays zu erhalten. In diesem Programm. Wir werden ein Array primitiver Typen verwenden.

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

Mithilfe der Methode copyOfRange()

Die Methode copyOfRange() gehört zur Java-Arrays-Klasse. Es kopiert den angegebenen Bereich des Arrays in das neu erstellte Array (Slice-Array) und gibt das neu erstellte Array zurück, das den angegebenen Bereich aus dem ursprünglichen Array enthält. Es braucht An) Zeit, ein Slicing eines Arrays zu erstellen und An) Platz zum Speichern von Elementen, wobei n die Anzahl der Elemente des resultierenden Arrays ist.

Unterschied zwischen zwei Strings Python

Syntax:

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

Die Methode analysiert die drei Parameter:

    Original:Es ist ein Array, dessen Slice gefunden werden soll.aus:Es ist der Startindex. Sie muss zwischen 0 und der Länge des angegebenen Arrays liegen.Zu:Es ist der Endindex.

Es werden die folgenden Ausnahmen ausgelöst:

    ArrayIndexOutOfBoundsException:Wenn from kleiner als 0 ist oder größer als die Länge des angegebenen Arrays ist.IllegalArgumentException:Wenn der Parameter from größer als to ist.NullPointerException:Wenn das angegebene Array null ist.

SliceArrayExample2.java

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

Ausgabe:

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

Durch die Verwendung von Java 8 Stream

Mit den folgenden Schritten können wir mithilfe des Java 8 Streams den Slice eines Arrays finden.

  • Suchen Sie zunächst das Array startIndex und endIndex.
  • Konvertieren Sie die Elemente (die sich im Bereich befinden) mit der Methode range() in Primitive Stream.
  • Verwendung der Karte() Die Methode ordnet die angegebenen Elemente aus dem angegebenen Array zu.
  • Durch Aufrufen der toArray() Methode, konvertieren Sie das zugeordnete Array in ein Array.
  • Drucken Sie das aus geschnitten

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

Ausgabe:

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