Skip to content

Colecții în Java — List, Set, Map, Queue

DodaTech Updated 2025-01-15 2 min read

In this tutorial, you'll learn about Colecții în Java. We cover key concepts, practical examples, and best practices.

Colecțiile Java sunt framework-ul standard pentru stocarea, gruparea și manipularea obiectelor, oferind implementări pentru List, Set, Map și Queue, fiecare optimizată pentru operații specifice de acces, căutare și inserare.

The Problem

Alegerea greșită a tipului de colecție duce la performanță slabă și cod complicat. Acest quick-fix îți arată cum să alegi colecția potrivită pentru fiecare scenariu.

The Wrong Way

// ArrayList folosit pentru căutări frecvente — O(n)
List<String> users = new ArrayList<>();
users.add("Ana");
// căutare frecventă
if (users.contains("Ana")) { ... }  // O(n) — ineficient

The Right Way

// HashSet pentru căutări frecvente — O(1)
Set<String> users = new HashSet<>();
users.add("Ana");
if (users.contains("Ana")) { ... }  // O(1) — rapid

Step-by-Step Fix

1. Alege tipul potrivit

// Când ai nevoie de ordine inserării și acces indexat
List<String> list = new ArrayList<>();       // O(1) get, O(n) căutare

// Când ai nevoie de elemente unice
Set<String> set = new HashSet<>();           // O(1) pentru operații
Set<String> tree = new TreeSet<>();          // O(log n), sortat

// Când ai nevoie de perechi cheie-valoare
Map<String, Integer> map = new HashMap<>();  // O(1) get/put

// Când ai nevoie de o coadă FIFO
Queue<String> queue = new LinkedList<>();    // O(1) add/remove

2. Folosește colecții imutabile

List.of("a", "b", "c");           // Listă imutabilă
Set.of("x", "y", "z");            // Set imutabil
Map.of("k1", "v1", "k2", "v2");   // Map imutabil

Prevention Tips

  • Preferă interfețele (List, Set) în declarații, nu implementările (ArrayList, HashSet)
  • Folosește ArrayList pentru acces indexat frecvent și LinkedList pentru inserări/ștergeri frecvente la început
  • HashMap permite o cheie null și valori null; Hashtable nu
  • Pentru thread-safety, folosește ConcurrentHashMap în loc de Collections.synchronizedMap()

Common Mistakes

  1. Modificarea colecției în timpul iterării — aruncă ConcurrentModificationException. Folosește <a href="/design-patterns/iterator/">Iterator</a>.remove().
  2. Folosirea lui ArrayList când ai nevoie de elemente unice — duce la căutări O(n) și verificări manuale.
  3. Neglijarea initial capacity — pentru colecții mari, specifică new HashMap<>(expectedSize).

FAQ

### Care e diferența dintre ArrayList și LinkedList?

ArrayList e bazat pe array, O(1) get și O(n) inserare la început. LinkedList e bazat pe noduri, O(n) get și O(1) inserare la capete.

Ce colecție e thread-safe?

ConcurrentHashMap, CopyOnWriteArrayList, BlockingQueue. Pentru cazuri simple, Collections.synchronizedList().

Când să folosesc TreeSet în loc de HashSet?

Când ai nevoie de elemente sortate sau de operații pe submulțimi (range queries). TreeSet oferă O(log n) și ordonare naturală.

Construit de dezvoltatorii Doda Browser, DodaZIP și Durga Antivirus Pro. Instrumentele DodaTech se integrează perfect cu Java pentru productivitate și securitate sporite.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro