Java: HashSet vs.HashMap

Tengo un programa trabajando en enormes conjuntos de datos. Los objetos se almacenan mejor en contenedores implementados con hash ya que el programa sigue buscando objetos en el contenedor.

La primera idea fue usar HashMap ya que los métodos para obtener y eliminar este contenedor son más adecuados para los usos que necesito.

Pero, llegué a ver que el uso de HashMap es bastante consumible en la memoria, lo cual es un problema importante, así que pensé que cambiar a HashSet sería mejor porque solo usa<E>, y no<K,V> por elemento, pero cuando miré la implementación, ¡aprendí que usa un HashMap subyacente! ¡Esto significa que no guardará ningún recuerdo!

Entonces estas son mis preguntas:

¿Son ciertas todas mis suposiciones?¿La memoria de HashMap es un desperdicio? más específicamente, ¿cuál es su sobrecarga para cada entrada?¿HashSet es tan derrochador como HashMap?

¿Hay otros contenedores basados en Hash que serán significativamente menos consumibles de memoria?

actualizar

Como se solicitó en los comentarios, extenderé un poco mi programa, el hashMap está destinado a contener un par de otros objetos y algún valor numérico, un valor flotante, calculado a partir de ellos. en el camino extrae algunos de ellos y entra en nuevos pares. Dado un par, necesita asegurarse de que no tiene este par o eliminarlo. La asignación se puede hacer usando el valor flotante o elhashCode del objeto par.

Además, cuando digo "conjuntos de datos enormes" estoy hablando de ~ 4 * 10 ^ 9 objetos

Respuestas a la pregunta(3)

Su respuesta a la pregunta