En Java, matriu tallant és una manera d'obtenir un subarray de la matriu donada. Suposem que a[] és una matriu. Té 8 elements indexats de a[0] a a[7].
a[] = {8, 9, 4, 6, 0, 11, 45, 21}
com centrar una imatge en CSS
Ara, volem trobar una porció de l'índex de matriu des de a[3] a a[6]. On a[3] és l'índex inicial i a[6] és l'índex final. Per tant, obtenim el següent matriu en rodanxes :
a[] = {6, 0, 11, 45}
En aquest apartat, aprendrem com trobar una porció d'una matriu a Java.
Hi ha les tres maneres següents de trobar una porció d'una matriu:
- En copiar elements
- Mitjançant l'ús del mètode copyOfRange().
- Utilitzant Java 8 Stream
Parlem de cada mètode en detall.
ascii d'a en java
En copiar elements
És un mètode natiu per obtenir una porció d'una matriu. En aquest mètode, primer, trobem l'índex inicial i final de la matriu donada. Després d'això, creem una matriu buida (matriu en rodanxes) de mida (endIndex - startIndex). Des de la matriu donada, copieu els elements (de startIndex) a la matriu en rodanxes. Finalment, imprimiu la matriu en rodanxes.
Implementem l'enfocament anterior en a Java programa per obtenir una matriu en llesques de la matriu donada. En aquest programa. utilitzarem una matriu de tipus primitius.
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('Slice of Array: '+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 -> 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('Slice of array for the specified range is: '+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;>
Mitjançant l'ús del mètode copyOfRange().
El mètode copyOfRange() pertany a la classe Java Arrays . Copia l'interval especificat de la matriu a la matriu acabada de crear (matriu de porcions) i retorna la matriu acabada de crear que conté l'interval especificat de la matriu original. Pren O(n) temps per crear un tall d'una matriu i O(n) espai per emmagatzemar elements, on n és el nombre d'elements de la matriu resultant.
exemple de dades json
Sintaxi:
public static int[] copyOfRange(int[] original, int from, int to)
El mètode analitza els tres paràmetres:
Llança les següents excepcions:
connectivitat java
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('Slice of Array: '+Arrays.toString(sliceArray)); } }
Sortida:
Slice of Array: [56, 90, 111, 901, 251]
Mitjançant l'ús de Java 8 Stream
Mitjançant els passos següents, podem trobar la porció d'una matriu mitjançant el Java 8 Stream.
- Primer, cerqueu la matriu startIndex i endIndex.
- Converteix els elements (que es troben dins l'interval) a Primitive Stream mitjançant el mètode range().
- Utilitzant el mapa () El mètode mapeja els elements especificats de la matriu especificada.
- Invocant el toArray() mètode, converteix la matriu assignada en una matriu.
- Imprimeix el a rodanxes
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 -> 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('Slice of array for the specified range is: '+Arrays.toString(slcarray)); } }
Sortida:
Slice of array for the specified range is: [100, 345, 897, 67, 123, 0]