Package org.eclipse.rdf4j.sail.memory.model

## Class WeakObjectRegistry<E>

- java.lang.Object
- - java.util.AbstractCollection<E>
  - - java.util.AbstractSet<E>
    - - org.eclipse.rdf4j.sail.memory.model.WeakObjectRegistry<E>

- All Implemented Interfaces:
    `Iterable<E>`, `Collection<E>`, `Set<E>`

      public class WeakObjectRegistry<E>
      extends AbstractSet<E>

  An object registry that uses weak references to keep track of the stored objects. The registry can be used to retrieve stored objects using another, equivalent object. As such, it can be used to prevent the use of duplicates in another data structure, reducing memory usage. The objects that are being stored should properly implement the `Object.equals(java.lang.Object)` and `Object.hashCode()` methods.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `static class` | `WeakObjectRegistry.AutoCloseableIterator<E>` |

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `WeakObjectRegistry()` | Constructs a new, empty object registry.
    `WeakObjectRegistry​(Collection<? extends E> c)` | Constructs a new WeakObjectRegistry containing the elements in the specified collection.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `boolean` | `add​(E object)` |
    `void` | `clear()` |
    `WeakObjectRegistry.AutoCloseableIterator<E>` | `closeableIterator()` |
    `boolean` | `contains​(Object key)` |
    `E` | `get​(Object key)` | Retrieves the stored object that is equal to the supplied key object.
    `E` | `getOrAdd​(Object key, Supplier<E> supplier)` |
    `Iterator<E>` | `iterator()` |
    `boolean` | `remove​(Object object)` |
    `int` | `size()` |

    - ### Methods inherited from class java.util.AbstractSet

      `equals, hashCode, removeAll`

    - ### Methods inherited from class java.util.AbstractCollection

      `addAll, containsAll, isEmpty, retainAll, toArray, toArray, toString`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface java.util.Collection

      `parallelStream, removeIf, stream, toArray`

    - ### Methods inherited from interface java.lang.Iterable

      `forEach`

    - ### Methods inherited from interface java.util.Set

      `addAll, containsAll, isEmpty, retainAll, spliterator, toArray, toArray`

- - ### Constructor Detail

    - #### WeakObjectRegistry

          public WeakObjectRegistry()

      Constructs a new, empty object registry.

    - #### WeakObjectRegistry

          public WeakObjectRegistry​(Collection<? extends E> c)

      Constructs a new WeakObjectRegistry containing the elements in the specified collection.
      Parameters:
        `c` - The collection whose elements are to be placed into this object registry.
      Throws:
        `NullPointerException` - If the specified collection is null.

  - ### Method Detail

    - #### get

          public E get​(Object key)

      Retrieves the stored object that is equal to the supplied key object.
      Parameters:
        `key` - The object that should be used as the search key for the operation.
      Returns:
        A stored object that is equal to the supplied key, or null if no such object was found.

    - #### closeableIterator

          public WeakObjectRegistry.AutoCloseableIterator<E> closeableIterator()

    - #### iterator

          public Iterator<E> iterator()

      Specified by:
        `iterator` in interface `Collection<E>`
      Specified by:
        `iterator` in interface `Iterable<E>`
      Specified by:
        `iterator` in interface `Set<E>`
      Specified by:
        `iterator` in class `AbstractCollection<E>`

    - #### size

          public int size()

      Specified by:
        `size` in interface `Collection<E>`
      Specified by:
        `size` in interface `Set<E>`
      Specified by:
        `size` in class `AbstractCollection<E>`

    - #### contains

          public boolean contains​(Object key)

      Specified by:
        `contains` in interface `Collection<E>`
      Specified by:
        `contains` in interface `Set<E>`
      Overrides:
        `contains` in class `AbstractCollection<E>`

    - #### add

          public boolean add​(E object)

      Specified by:
        `add` in interface `Collection<E>`
      Specified by:
        `add` in interface `Set<E>`
      Overrides:
        `add` in class `AbstractCollection<E>`

    - #### getOrAdd

          public E getOrAdd​(Object key,
                            Supplier<E> supplier)

    - #### remove

          public boolean remove​(Object object)

      Specified by:
        `remove` in interface `Collection<E>`
      Specified by:
        `remove` in interface `Set<E>`
      Overrides:
        `remove` in class `AbstractCollection<E>`

    - #### clear

          public void clear()

      Specified by:
        `clear` in interface `Collection<E>`
      Specified by:
        `clear` in interface `Set<E>`
      Overrides:
        `clear` in class `AbstractCollection<E>`