Set.contains în Java

contains verifică rapid dacă un element este în mulțime; containsAll verifică dacă sunt toate elementele altei colecții.

Sintaxă
boolean contains(Object o)
boolean containsAll(Collection<?> c)

Ce face Set.contains

contains(x) este operația pentru care se folosesc de obicei mulțimile: la HashSet durează aproape la fel de puțin indiferent câte elemente are mulțimea, la TreeSet timp logaritmic. La o listă, contains verifică elementele pe rând, deci e mult mai lent pentru date mari.

containsAll(c) returnează true dacă fiecare element din c se află în mulțime, adică c este o submulțime. Ambele folosesc equals/hashCode (la TreeSet, comparatorul).

Parametri

Parametru Descriere
o Elementul căutat.
c Colecția ale cărei elemente trebuie să fie toate prezente.

Ce returnează

true sau false.

Exemple

Exemplul 1: Este zi liberă?

import java.time.LocalDate;
import java.util.Set;

public class Main {
    public static void main(String[] args) {
        Set<LocalDate> libere = Set.of(
                LocalDate.of(2026, 12, 1), LocalDate.of(2026, 12, 25), LocalDate.of(2026, 12, 26));
        for (LocalDate zi : new LocalDate[] {LocalDate.of(2026, 12, 1), LocalDate.of(2026, 12, 2)}) {
            System.out.println(zi + (libere.contains(zi) ? ": zi liberă" : ": zi lucrătoare"));
        }
    }
}

Rezultat

2026-12-01: zi liberă
2026-12-02: zi lucrătoare

Exemplul 2: Are candidatul toate competențele?

import java.util.List;
import java.util.Set;

public class Main {
    public static void main(String[] args) {
        Set<String> ana = Set.of("Java", "SQL", "Git", "engleză");
        List<String> cerute = List.of("Java", "Git");
        List<String> cerute2 = List.of("Java", "Docker");
        System.out.println("Post 1: " + ana.containsAll(cerute));
        System.out.println("Post 2: " + ana.containsAll(cerute2));
        System.out.println("Știe SQL? " + ana.contains("SQL"));
        System.out.println("Știe sql? " + ana.contains("sql"));
    }
}

Rezultat

Post 1: true
Post 2: false
Știe SQL? true
Știe sql? false

Greșeli frecvente

  • Cauți un text cu altă scriere (majuscule, spații). contains folosește equals, deci „SQL” și „sql” sunt diferite.
  • Folosești list.contains într-o buclă pe date mari. Copiază mai întâi lista într-un HashSet.

Comenzi înrudite

  • Set: Interfața pentru mulțimi: colecții fără duplicate, în care întrebi rapid dacă un element există.
  • Set.add: Adaugă un element în mulțime doar dacă nu există deja; returnează true dacă a fost adăugat. addAll face reuniunea.
  • Collection.retainAll: retainAll păstrează doar elementele care apar și în altă colecție; containsAll verifică dacă le conține pe toate.
  • List.contains: Verifică dacă lista conține o valoare (contains) sau toate valorile altei colecții (containsAll).
  • Map.containsKey: containsKey verifică rapid dacă o cheie există în map; containsValue caută o valoare, mai lent, printre toate perechile.