logo

Fatiamento de array em Java

Em Java, matriz fatiamento é uma maneira de obter um subarray do array fornecido. Suponha que a[] seja um array. Possui 8 elementos indexados de a[0] a a[7].

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

contar sql distinto

Agora, queremos encontrar uma fatia do índice do array de a[3] a a[6]. Onde a[3] é o startIndex e a[6] é o endIndex. Portanto, obtemos o seguinte matriz fatiada :

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

Nesta seção, aprenderemos como encontrar uma fatia de um array em Java.

Existem as três maneiras a seguir de encontrar uma fatia de uma matriz:

  • Copiando elementos
  • Usando o método copyOfRange()
  • Usando Java 8 Stream

Vamos discutir cada método em detalhes.

scanner em java

Copiando Elementos

É um método nativo para obter uma fatia de um array. Neste método, primeiro encontramos o índice inicial e final do array fornecido. Depois disso, criamos um array vazio (array fatiado) de tamanho (endIndex - startIndex). Do array fornecido, copie os elementos (de startIndex) para o array fatiado. Por fim, imprima o array fatiado.

Vamos implementar a abordagem acima em um Java programa para obter uma matriz fatiada da matriz fornecida. Neste programa. usaremos uma matriz de tipos primitivos.

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

Usando o método copyOfRange()

O método copyOfRange() pertence à classe Java Arrays. Ele copia o intervalo especificado do array para o array recém-criado (matriz de fatia) e retorna o array recém-criado que contém o intervalo especificado do array original. Leva Sobre) hora de criar o fatiamento de um array e Sobre) espaço para armazenar elementos, onde n é o número de elementos do array resultante.

quantas onças equivalem a 10 mililitros

Sintaxe:

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

O método analisa os três parâmetros:

    original:É um array cuja fatia deve ser encontrada.de:É o índice inicial. Deve estar entre 0 e o comprimento da matriz fornecida.para:É o índice final.

Ele lança as seguintes exceções:

    Índice de matriz fora dos limites de exceção:Se from for menor que 0 ou from for maior que o comprimento da matriz especificada.Exceção de argumento ilegal:Se o parâmetro from for maior que to.Null Pointer Exception:Se a matriz fornecida for nula.

SliceArrayExample2.java

tutorial de linguagem de programação 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)); } } 

Saída:

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

Usando Java 8 Stream

Usando as etapas a seguir, podemos encontrar a fatia de um array usando o Java 8 Stream.

  • Primeiro, encontre o array startIndex e endIndex.
  • Converta os elementos (que estão dentro do intervalo) em Fluxo Primitivo usando o método range().
  • Usando o mapa() O método mapeia os elementos especificados da matriz especificada.
  • Ao invocar o toArray() método, converta o array mapeado em um array.
  • Imprima o fatiado

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

Saída:

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