# HashSet<E> constructor

HashSet<E>()

A custom implementation of a hash set that implements the `Set<E>` interface.

This `HashSet` stores unique elements and provides constant-time operations for insertion, removal, and lookup in the average case.

It uses open addressing with chaining to resolve hash collisions: each bucket is a list of values (`List<E>`) that share the same hash index.

When the load factor (size / capacity) exceeds 0.75, the internal bucket array is resized to maintain efficiency.

### ⚙️ Design Highlights:

- Uses `_buckets: List<List<E>?>` for collision handling
- On collision: appends to the list in the corresponding bucket
- Grows dynamically when usage exceeds load factor threshold

### 📦 Example Usage:

    final set = HashSet<String>();
    set.add('apple');
    set.add('banana');
    set.add('apple'); // Duplicate, ignored

    print(set.contains('banana')); // true
    print(set.length); // 2
    print(set); // {apple, banana}

Creates an empty set with an initial capacity of 16.

## Implementation

    HashSet() : _capacity = _initialCapacity, _buckets = List.filled(_initialCapacity, null);