Colecții în Java — List, Set, Map, Queue
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
ArrayListpentru acces indexat frecvent șiLinkedListpentru inserări/ștergeri frecvente la început HashMappermite o cheie null și valori null;Hashtablenu- Pentru thread-safety, folosește
ConcurrentHashMapîn loc deCollections.synchronizedMap()
Common Mistakes
- Modificarea colecției în timpul iterării — aruncă
ConcurrentModificationException. Folosește<a href="/design-patterns/iterator/">Iterator</a>.remove(). - Folosirea lui
ArrayListcând ai nevoie de elemente unice — duce la căutări O(n) și verificări manuale. - Neglijarea initial capacity — pentru colecții mari, specifică
new HashMap<>(expectedSize).
FAQ
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