Ce face Collections.frequency
Collections.frequency(colectie, valoare) parcurge colecția și numără elementele egale (cu equals) cu valoare. Poți număra și null-uri.
Pentru o singură valoare este cea mai simplă soluție. Dacă vrei să numeri toate valorile, nu o apela pentru fiecare valoare (ar parcurge colecția de multe ori): construiește un map cu merge(v, 1, Integer::sum).
Parametri
| Parametru | Descriere |
|---|---|
c |
Colecția în care se numără. |
o |
Valoarea căutată. |
Ce returnează
Numărul de apariții (int), 0 dacă nu apare.
Exemple
Exemplul 1: Câți elevi au luat 10?
import java.util.Collections;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> note = List.of(10, 8, 10, 7, 9, 10, 5);
System.out.println("Note de 10: " + Collections.frequency(note, 10));
System.out.println("Note de 6: " + Collections.frequency(note, 6));
}
}
Rezultat
Note de 10: 3
Note de 6: 0
Exemplul 2: Apariția unui cuvânt într-un text
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class Main {
public static void main(String[] args) {
String text = "Ana are mere. Ana vinde mere și pere. Radu cumpără mere de la Ana.";
List<String> cuvinte = Arrays.asList(text.replaceAll("[.,]", "").split(" "));
for (String c : List.of("Ana", "mere", "pere", "prune")) {
System.out.println(c + ": " + Collections.frequency(cuvinte, c));
}
}
}
Rezultat
Ana: 3
mere: 3
pere: 1
prune: 0
Greșeli frecvente
- Numeri un
intîntr-oList<Long>:frequency(lista, 5)caută unInteger, care nu este egal cu unLong, deci rezultatul e 0. Scrie5L. - Apelezi
frequencyîntr-o buclă pentru fiecare valoare pe date mari. Folosește un map de contoare.
Comenzi înrudite
Map.merge: Pune valoarea dacă cheia lipsește; dacă există, combină valoarea veche cu cea nouă (de exemplu le adună). Ideal pentru numărători și totaluri.Collections.max: Returnează cel mai mare (max) sau cel mai mic (min) element dintr-o colecție, după ordinea naturală sau după un Comparator.List.contains: Verifică dacă lista conține o valoare (contains) sau toate valorile altei colecții (containsAll).Collections: Clasă cu metode statice gata făcute pentru colecții: sortare, amestecare, minim și maxim, numărare, liste nemodificabile.