Ce face List.indexOf
indexOf(o) caută de la începutul listei și returnează poziția primului element egal cu o. lastIndexOf(o) caută de la sfârșit și returnează poziția ultimei apariții. Dacă valoarea nu există, ambele returnează -1.
Compararea se face cu equals. Dacă vrei doar să știi dacă valoarea există, contains este mai clar. Dacă indexOf și lastIndexOf dau aceeași poziție (și nu -1), valoarea apare o singură dată.
Parametri
| Parametru | Descriere |
|---|---|
o |
Valoarea căutată. |
Ce returnează
Poziția (de la 0) sau -1.
Exemple
Exemplul 1: Prima și ultima zi cu ploaie
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> vreme = List.of("soare", "ploaie", "nori", "ploaie", "soare");
System.out.println("Prima ploaie: ziua " + vreme.indexOf("ploaie"));
System.out.println("Ultima ploaie: ziua " + vreme.lastIndexOf("ploaie"));
System.out.println("Ninsoare: " + vreme.indexOf("ninsoare"));
}
}
Rezultat
Prima ploaie: ziua 1
Ultima ploaie: ziua 3
Ninsoare: -1
Exemplul 2: Găsește poziția și înlocuiește
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> echipa = new ArrayList<>(List.of("Ana", "Bogdan", "Carmen"));
int poz = echipa.indexOf("Bogdan");
if (poz != -1) {
echipa.set(poz, "Dan");
}
System.out.println(echipa);
System.out.println("Bogdan apare o singură dată? "
+ (echipa.indexOf("Bogdan") == echipa.lastIndexOf("Bogdan")));
}
}
Rezultat
[Ana, Dan, Carmen]
Bogdan apare o singură dată? true
Greșeli frecvente
- Verifici rezultatul cu
if (lista.indexOf(x) > 0). Poziția 0 este validă; condiția corectă este!= -1sau>= 0. - Folosești
indexOfîntr-o buclă pe o listă mare: fiecare apel parcurge lista. Pentru căutări repetate, construiește unHashMapde la valoare la poziție.
Comenzi înrudite
List.contains: Verifică dacă lista conține o valoare (contains) sau toate valorile altei colecții (containsAll).List.get: get citește elementul de la o poziție; set îl înlocuiește și returnează valoarea veche.Collections.binarySearch: Caută rapid o valoare într-o listă sortată, prin înjumătățiri. Returnează poziția sau un număr negativ care arată unde ar trebui inserată.Arrays.binarySearch: Caută rapid o valoare într-un array sortat. Returnează poziția sau un număr negativ care arată unde ar trebui inserată.