Important Collection Interfaces and Classes in Java

Java’s Collections provides a set of interfaces and classes to manage and manipulate groups of objects. Below is a comprehensive list of the key interfaces and their common implementing classes.


Core Interfaces

These define the fundamental structure of collections.

  1. Collection (Root Interface)
    • Description: The base interface for all collections, providing methods like add(), remove(), size(), and iterator().
    • Sub-Interfaces: List, Set, Queue.
  2. List
    • Description: An ordered collection that allows duplicates and positional access (via indices).
    • Classes:
      • ArrayList: Dynamic array-based list; fast random access (O(1)), slow middle insertions (O(n)).
      • LinkedList: Doubly-linked list; fast insertions/deletions (O(1)), slow random access (O(n)); also implements Deque.
      • Vector: Synchronized dynamic array (legacy, thread-safe ArrayList).
      • Stack: Subclass of Vector, implements LIFO (Last-In-First-Out) stack (legacy; prefer Deque).
  3. Set
    • Description: A collection that does not allow duplicates; no order guarantee unless specified.
    • Classes:
      • HashSet: Hash table-based set; unordered, fast operations (O(1)), allows one null.
      • LinkedHashSet: Hash table + linked list; maintains insertion order, slightly slower than HashSet.
      • TreeSet: Red-black tree-based set; sorted order (natural or custom), O(log n) operations, no null.
  4. Queue
    • Description: A collection designed for holding elements prior to processing, typically FIFO (First-In-First-Out).
    • Sub-Interface: Deque (Double-Ended Queue).
    • Classes:
      • PriorityQueue: Heap-based queue; elements ordered by natural order or comparator, O(log n) insertion.
      • ArrayDeque: Resizable array-based deque; fast O(1) operations at both ends; implements Deque.
  5. Deque (Double-Ended Queue)
    • Description: Extends Queue to allow adding/removing elements from both ends.
    • Classes:
      • ArrayDeque: See above.
      • LinkedList: Also implements Deque.
  6. Map
    • Description: Not a Collection subtype; stores key-value pairs, keys are unique.
    • Classes:
      • HashMap: Hash table-based map; unordered, fast O(1) operations, allows one null key.
      • LinkedHashMap: Hash table + linked list; maintains insertion order.
      • TreeMap: Red-black tree-based map; sorted by keys, O(log n) operations, no null keys.
      • Hashtable: Synchronized hash table (legacy, thread-safe HashMap).

Additional Interfaces

These extend or complement the core interfaces.

  1. SortedSet (extends Set)
    • Description: A Set with elements in sorted order.
    • Classes:
      • TreeSet: See above.
  2. NavigableSet (extends SortedSet)
    • Description: Adds navigation methods (e.g., lower(), higher(), ceiling()).
    • Classes:
      • TreeSet: Implements this interface.
  3. SortedMap (extends Map)
    • Description: A Map with keys in sorted order.
    • Classes:
      • TreeMap: See above.
  4. NavigableMap (extends SortedMap)
    • Description: Adds navigation methods for keys (e.g., floorKey(), ceilingKey()).
    • Classes:
      • TreeMap: Implements this interface.
  5. Iterator
    • Description: Interface for iterating over collections (hasNext(), next(), remove()).
    • Used By: All Collection subtypes.
  6. ListIterator (extends Iterator)
    • Description: Bidirectional iterator for List (adds previous(), hasPrevious()).
    • Used By: List implementations.

Concurrent Collections (Thread-Safe)

From java.util.concurrent, designed for multi-threaded environments.

  1. ConcurrentHashMap
    • Description: Thread-safe HashMap with fine-grained locking; allows concurrent reads/writes.
  2. CopyOnWriteArrayList
    • Description: Thread-safe ArrayList; creates a new copy on write operations, good for read-heavy scenarios.
  3. CopyOnWriteArraySet
    • Description: Thread-safe Set backed by CopyOnWriteArrayList.
  4. BlockingQueue (extends Queue)
    • Description: Queue with blocking operations for thread synchronization.
    • Classes:
      • ArrayBlockingQueue: Fixed-size, array-based blocking queue.
      • LinkedBlockingQueue: Optionally bounded, linked-list-based blocking queue.
      • PriorityBlockingQueue: Unbounded, priority-based blocking queue.
  5. BlockingDeque (extends Deque)
    • Description: Double-ended blocking queue.
    • Classes:
      • LinkedBlockingDeque: Doubly-linked blocking deque.

Legacy Collections (Pre-Java 1.2)

These are older, synchronized implementations; use modern alternatives unless required.

  1. Vector
    • Description: See List section; replaced by ArrayList in most cases.
  2. Stack
    • Description: See List section; prefer ArrayDeque for stack operations.
  3. Hashtable
    • Description: See Map section; replaced by HashMap or ConcurrentHashMap.
  4. Dictionary
    • Description: Abstract class (predecessor to Map); rarely used today.

Summary Table

InterfaceKey ClassesPurpose
Collection(Base interface)General collection methods
ListArrayList, LinkedList, VectorOrdered, duplicates allowed
SetHashSet, LinkedHashSet, TreeSetNo duplicates
QueuePriorityQueue, ArrayDequeFIFO processing
DequeArrayDeque, LinkedListDouble-ended queue
MapHashMap, LinkedHashMap, TreeMapKey-value pairs
SortedSetTreeSetSorted unique elements
NavigableSetTreeSetNavigable sorted set
SortedMapTreeMapSorted key-value pairs
NavigableMapTreeMapNavigable sorted map
ConcurrentConcurrentHashMap, CopyOnWriteArrayListThread-safe collections
BlockingArrayBlockingQueue, LinkedBlockingDequeThread synchronization

Notes

  • Thread Safety: Most standard collections (ArrayList, HashMap, etc.) are not thread-safe. Use Collections.synchronizedXXX() or concurrent collections for multi-threading.
  • Performance: Choose based on use case (e.g., ArrayList for random access, LinkedList for frequent insertions).
  • Generics: All modern collections support generics (e.g., List<String>).

Let me know if you’d like examples or deeper explanations for any specific collection!

Related Posts

Leave a Reply

Your email address will not be published. Required fields are marked *