Java Array Indexof

Rupam Yadav 12 ottobre 2023
  1. Ottieni l’indice di un elemento in un array di tipi Integer in Java
  2. Ottieni l’indice di un elemento array utilizzando Java 8 Stream API in Java
  3. Ottieni l’indice di un elemento array utilizzando ArrayUtils.indexOf() in Java
Java Array Indexof

Questo articolo introduce come ottenere l’indice di un array in Java utilizzando tecniche diverse.

Ottieni l’indice di un elemento in un array di tipi Integer in Java

Non esiste un metodo indexOf() per un array in Java, ma un ArrayList viene fornito con questo metodo che restituisce l’indice dell’elemento specificato. Per accedere alla funzione indexOf(), creiamo prima un array di Integer e poi lo convertiamo in una lista usando Arrays.asList().

Si noti che usiamo una classe wrapper Integer invece di un primitivo int perché asList() accetta solo classi wrapper, ma restituiscono il risultato come un tipo di dati primitivo. Possiamo controllare il seguente esempio, dove specifichiamo l’elemento cioè 8 al metodo indexOf() per ottenere il suo indice. Il risultato che otteniamo da getIndex è del 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");
  }
}

Produzione:

8 is located at 3 index

Ottieni l’indice di un elemento array utilizzando Java 8 Stream API in Java

Possiamo usare l’API Stream per filtrare gli elementi dell’array e ottenere la posizione dell’elemento specificato. IntStream è un’interfaccia che consente a un int primitivo di utilizzare le funzioni Stream come filter e range.

range() è un metodo di IntStream che restituisce gli elementi dalla posizione iniziale fino alla fine dell’array. Ora usiamo filter() che accetta un predicato come argomento. Usiamo i -> elementToFind == array1[i] come predicato dove i è il valore ricevuto da range() e elementToFind == array1[i] è la condizione per controllare se elementToFind corrisponde all’elemento corrente di array1.

findFirst() restituisce il primo elemento e orElse() restituisce -1 se la condizione fallisce.

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

Produzione:

Index of 3 is 1

Ottieni l’indice di un elemento array utilizzando ArrayUtils.indexOf() in Java

Questo esempio utilizza la classe ArrayUtls inclusa nella Apache Commons Library. Usiamo la seguente dipendenza per importare le funzioni di libreria nel nostro progetto.

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

Usiamo la funzione indexOf() della classe ArrayUtils per trovare l’indice dell’array. indexOf() accetta due argomenti, il primo argomento è l’array e il secondo argomento è l’elemento di cui vogliamo trovare l’indice.

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

Produzione:

Index of 9 is 4
Autore: Rupam Yadav
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

Articolo correlato - Java Array