logo

Array Slicing i Java

I Java, array udskæring er en måde at få en subarray af den givne matrix. Antag, at a[] er en matrix. Den har 8 elementer indekseret fra a[0] til a[7].

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

32 bit arkitektur vs 64 bit

Nu ønsker vi at finde et udsnit af array-indekset fra a[3] til a[6]. Hvor a[3] er startindekset og a[6] er slutindekset. Derfor får vi følgende udskåret array :

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

I dette afsnit vil vi lære hvordan man finder et udsnit af et array i Java.

Der er følgende tre måder at finde et udsnit af en matrix på:

  • Ved at kopiere elementer
  • Ved at bruge metoden copyOfRange()
  • Brug af Java 8 Stream

Lad os diskutere hver metode i detaljer.

sql server pivot

Ved at kopiere elementer

Det er en indbygget metode til at få et udsnit af et array. I denne metode finder vi først start- og slutindekset for det givne array. Derefter opretter vi et tomt array (udskåret array) af størrelse (endIndex - startIndex). Fra det givne array skal du kopiere elementerne (fra startIndex) til det udskårne array. Udskriv til sidst det udskårne array.

Lad os implementere ovenstående tilgang i en Java program for at få et udsnit af det givne array. I dette program. vi vil bruge en række primitive typer.

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

Ved at bruge metoden copyOfRange()

Metoden copyOfRange() tilhører Java Arrays-klassen. Den kopierer det angivne område for arrayet til det nyoprettede array (slice array) og returnerer det nyoprettede array, der indeholder det angivne område fra det originale array. Det tager På) tid til at skabe udskæring af et array og På) plads til at gemme elementer, hvor n er antallet af elementer i det resulterende array.

til loop bash

Syntaks:

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

Metoden analyserer de tre parametre:

    original:Det er et array, hvis udsnit er at finde.fra:Det er startindekset. Det skal ligge mellem 0 til længden af ​​det givne array.til:Det er slutindekset.

Det giver følgende undtagelser:

    ArrayIndexOutOfBoundsException:Hvis fra er mindre end 0 eller fra er større end længden af ​​det angivne array.UlovligArgumentundtagelse:Hvis parameteren fra er større end til.NullPointerException:Hvis det givne array er null.

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

Produktion:

hvordan man blokerer YouTube-annoncer på Android
 Slice of Array: [56, 90, 111, 901, 251] 

Ved at bruge Java 8 Stream

Ved at bruge følgende trin kan vi finde udsnit af et array ved hjælp af Java 8 Stream.

  • Find først startIndex og endIndex-arrayet.
  • Konverter elementerne (der er inden for rækkevidde) til Primitive Stream ved hjælp af range()-metoden.
  • Bruger kort() metodekort de angivne elementer fra det angivne array.
  • Ved at påberåbe sig toArray() metode, skal du konvertere det tilknyttede array til et array.
  • Udskriv skåret i skiver

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

Produktion:

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