Java Array Indexof

Rupam Yadav 12 octubre 2023
  1. Obtener el índice de un elemento en un array de tipo Integer en Java
  2. Obtener el índice de un elemento de un array usando la API Stream de Java 8 en Java
  3. Obtener el índice de un elemento de un array utilizando ArrayUtils.indexOf() en Java
Java Array Indexof

Este artículo presenta cómo obtener el índice de un array en Java utilizando diferentes técnicas.

Obtener el índice de un elemento en un array de tipo Integer en Java

No hay un método indexOf() para un array en Java, pero un ArrayList viene con este método que devuelve el índice del elemento especificado. Para acceder a la función indexOf(), primero creamos un array de Integer y luego lo convertimos en una lista utilizando Arrays.asList().

Fíjate en que utilizamos una clase envolvente Integer en lugar de una primitiva int porque asList() sólo acepta clases envolventes, pero devuelven el resultado como un tipo de datos primitivo. Podemos comprobar el siguiente ejemplo, donde especificamos el elemento 8 al método indexOf() para obtener su índice. El resultado que obtenemos de getIndex es de tipo int.

import java.util.Arrays;

public class ArrayIndexOf {
  public static void main(String[] args) {
    Integer[] array1 = {2, 4, 6, 8, 10};

    int getIndex = Arrays.asList(array1).indexOf(8);

    System.out.println("8 is located at " + getIndex + " index");
  }
}

Resultado:

8 is located at 3 index

Obtener el índice de un elemento de un array usando la API Stream de Java 8 en Java

Podemos utilizar el Stream API para filtrar los elementos del array y obtener la posición del elemento especificado. El IntStream es una interfaz que permite a una primitiva int utilizar las funciones del Stream como filter y range.

range() es un método de IntStream que devuelve los elementos desde la posición inicial hasta el final del array. Ahora usamos filter() que toma un predicado como argumento. Usamos i -> elemenToFind == array1[i] como predicado donde i es el valor recibido de range() y elementToFind == array1[i] es la condición para comprobar si el elementToFind coincide con el elemento actual del array1.

La función findFirst() devuelve el primer elemento y orElse() devuelve -1 si la condición falla.

import java.util.stream.IntStream;

public class ArrayIndexOf {
  public static void main(String[] args) {
    int[] array1 = {1, 3, 5, 7, 9};

    int elementToFind = 3;

    int indexOfElement = IntStream.range(0, array1.length)
                             .filter(i -> elementToFind == array1[i])
                             .findFirst()
                             .orElse(-1);

    System.out.println("Index of " + elementToFind + " is " + indexOfElement);
  }
}

Producción :

Index of 3 is 1

Obtener el índice de un elemento de un array utilizando ArrayUtils.indexOf() en Java

Este ejemplo utiliza la clase ArrayUtls que se incluye en la biblioteca Apache Commons. Utilizamos la siguiente dependencia para importar las funciones de la biblioteca a nuestro proyecto.

  <dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.11</version>
  </dependency>

Utilizamos la función indexOf() de la clase ArrayUtils para encontrar el índice del array. La función indexOf() acepta dos argumentos, el primero es el array, y el segundo es el elemento del que queremos encontrar el índice.

import org.apache.commons.lang3.ArrayUtils;

public class ArrayIndexOf {
  public static void main(String[] args) {
    int[] array1 = {1, 3, 5, 7, 9};

    int elementToFind = 9;

    int indexOfElement = ArrayUtils.indexOf(array1, elementToFind);
    System.out.println("Index of " + elementToFind + " is " + indexOfElement);
  }
}

Producción :

Index of 9 is 4
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Artículo relacionado - Java Array