logo

Array Slicing i Java

I Java, array skjæring er en måte å få en undergruppe av den gitte matrisen. Anta at a[] er en matrise. Den har 8 elementer indeksert fra a[0] til a[7].

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

gi nytt navn til mappe i linux

Nå ønsker vi å finne et stykke av matriseindeksen fra a[3] til a[6]. Der a[3] er startindeksen og a[6] er sluttindeksen. Derfor får vi følgende oppskåret array :

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

I denne delen vil vi lære hvordan finne en del av en matrise i Java.

Det er følgende tre måter å finne en del av en matrise på:

  • Ved å kopiere elementer
  • Ved å bruke copyOfRange()-metoden
  • Bruker Java 8 Stream

La oss diskutere hver metode i detalj.

sql server pivot

Ved å kopiere elementer

Det er en naturlig metode for å få en del av en matrise. I denne metoden finner vi først start- og sluttindeksen til den gitte matrisen. Etter det lager vi en tom array (sliced ​​array) av størrelse (endIndex - startIndex). Fra den gitte matrisen kopierer du elementene (fra startIndex) til den oppdelte matrisen. Skriv til slutt ut den oppskårne matrisen.

La oss implementere tilnærmingen ovenfor i en Java program for å få en oppskåret matrise av den gitte matrisen. I dette programmet. vi vil bruke en rekke 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 å bruke copyOfRange()-metoden

CopyOfRange()-metoden tilhører Java Arrays-klassen . Den kopierer det spesifiserte området til matrisen til den nyopprettede matrisen (slice-matrisen) og returnerer den nyopprettede matrisen som inneholder det spesifiserte området fra den opprinnelige matrisen. Det tar På) tid til å lage slicing av en matrise og På) plass for å lagre elementer, der n er antall elementer i den resulterende matrisen.

javafx

Syntaks:

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

Metoden analyserer de tre parameterne:

    opprinnelig:Det er en matrise hvis skive er å finne.fra:Det er startindeksen. Den må ligge mellom 0 og lengden på den gitte matrisen.til:Det er sluttindeksen.

Det gir følgende unntak:

    ArrayIndexOutOfBoundsException:Hvis fra er mindre enn 0 eller fra er større enn lengden på den angitte matrisen.UlovligArgumentUnntak:Hvis parameteren fra er større enn til.NullPointerException:Hvis den gitte matrisen 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)); } } 

Produksjon:

hvordan blokkere YouTube-annonser på Android
 Slice of Array: [56, 90, 111, 901, 251] 

Ved å bruke Java 8 Stream

Ved å bruke følgende trinn kan vi finne stykket av en matrise ved å bruke Java 8 Stream.

  • Først finner du startIndex og endIndex-matrisen.
  • Konverter elementene (som er innenfor rekkevidde) til Primitive Stream ved å bruke range()-metoden.
  • Bruker kart() metodekart de spesifiserte elementene fra den spesifiserte matrisen.
  • Ved å påkalle toArray() metoden, konverterer den tilordnede matrisen til en matrise.
  • Skriv ut oppskåret

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

Produksjon:

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