logo

Array Slicing în Java

În Java, matrice felierea este o modalitate de a obține un subbary al matricei date. Să presupunem că a[] este o matrice. Are 8 elemente indexate de la a[0] la a[7].

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

1 la 100 roman nr

Acum, dorim să găsim o porțiune a indexului matricei de la a[3] la a[6]. Unde a[3] este startIndex și a[6] este endIndex. Prin urmare, obținem următoarele matrice feliată :

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

În această secțiune, vom învăța cum să găsiți o porțiune dintr-o matrice în Java.

Există următoarele trei moduri de a găsi o porțiune dintr-o matrice:

  • Prin copierea elementelor
  • Prin utilizarea metodei copyOfRange().
  • Folosind Java 8 Stream

Să discutăm fiecare metodă în detaliu.

mysql listează toți utilizatorii

Prin copierea elementelor

Este o metodă nativă pentru obținerea unei porțiuni dintr-o matrice. În această metodă, în primul rând, găsim indexul de început și de sfârșit al tabloului dat. După aceea, creăm o matrice goală (sliced ​​array) de dimensiune (endIndex - startIndex). Din matricea dată, copiați elementele (din startIndex) în matricea sliced. În cele din urmă, imprimați matricea feliată.

Să implementăm abordarea de mai sus în a Java program pentru a obține o matrice în felii a matricei date. În acest program. vom folosi o serie de tipuri primitive.

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

Prin utilizarea metodei copyOfRange().

Metoda copyOfRange() aparține clasei Java Arrays. Copiază intervalul specificat al matricei în matricea nou creată (matricea slice) și returnează matricea nou creată care conține intervalul specificat din matricea originală. Este nevoie de Pe) timpul pentru a crea felii dintr-o matrice și Pe) spațiu pentru stocarea elementelor, unde n este numărul de elemente ale tabloului rezultat.

java localdatetime

Sintaxă:

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

Metoda analizează cei trei parametri:

Descărcați videoclipuri de pe youtube vlc
    original:Este o matrice a cărei felie este de găsit.din:Este indexul de pornire. Trebuie să fie între 0 și lungimea matricei date.la:Este indexul final.

Aruncă următoarele excepții:

    Indicele matricei este în afara limitelor:Dacă de la este mai mic decât 0 sau de la este mai mare decât lungimea matricei specificate.IllegalArgumentException:Dacă parametrul from este mai mare decât to.NullPointerException:Dacă tabloul dat este 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)); } } 

Ieșire:

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

Prin utilizarea Java 8 Stream

Utilizând următorii pași, putem găsi porțiunea unei matrice folosind Java 8 Stream.

  • Mai întâi, găsiți matricea startIndex și endIndex.
  • Convertiți elementele (care se află în interval) în Primitive Stream folosind metoda range().
  • Folosind Hartă() metoda mapează elementele specificate din tabloul specificat.
  • Prin invocarea toArray() metoda, convertiți matricea mapată într-o matrice.
  • Imprimați feliate

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

Ieșire:

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