Java Academy Logo

Java Collection Framework (JCF)

The Java Collection Framework is a powerful set of classes and interfaces that provide a standard way to store, manage, and manipulate groups of objects in Java. It is part of the java.util package and offers ready-to-use data structures and algorithms, making development faster and more efficient.

Why Use the Collection Framework?

  • Reduces development time with built-in data structures
  • Improves performance with optimized classes
  • Provides consistent APIs across different types of collections
  • Supports algorithms like sorting, searching, and shuffling
  • Enhances code reusability and readability

Hierarchy of the Collection Framework

Control Flow Overview

1. Interfaces

The backbone of the framework—defines abstract data types.

Collection

Root interface for most collections

List

Ordered collection allowing duplicate elements (ordered means maintain insertion order)

Set

Unordered collection of unique elements

Note: Set has LinkedHashSet which still maintains unique elements BUT maintains insertion order using a linked list internally. It acts like a mix of HashSet (uniqueness + fast lookup) and Linked list (keeps order).

SortedSet / NavigableSet

Sorted versions of Set

Queue

For FIFO structures. FIFO means First In, First Out. The first item added is the first one removed.

Deque

Double-ended queue. You can add or remove items from both the front and the back. More flexible than a regular queue.

Map

Key-value based collections (not under Collection interface)

SortedMap / NavigableMap

Sorted versions of Map

Core Implementations

Common Algorithms

The Collections utility class provides helpful methods such as:

1. sort()

Arranges the elements of a list in ascending order.

Example: [3, 1, 2] becomes [1, 2, 3].

2. reverse()

Reverses the order of elements in a list.

Example: [1, 2, 3] becomes [3, 2, 1].

3. shuffle()

Randomly mixes the elements in a list.

Example: [1, 2, 3] might become [3, 1, 2].

4. binarySearch()

Searches for an element in a sorted list.

  • Returns the index of the element if found
  • Much faster than normal search, but the list must be sorted first

5. min() / max()

  • min() returns the smallest element
  • max() returns the largest element

6. frequency()

Counts how many times a particular element appears in a collection.

Example: In [1, 2, 2, 3], the frequency of 2 is 2.