[Dúvida] Hashtable... conceito

Olá pessoal, bom, sou iniciante em Java e estou estudando essa estrutura de dados chamada Hashtable. Eu só queria que vocês me ajudassem mais a entender os conceitos desta estrutura, não consegui entender bem através de livros e nem no próprio site da oracle. Até agora conclui que:
Hashtable é uma estrutura de dados que herda da classe dicionários os métodos básicos como(put, get, contains, isEmpty, etc…) e essa estrutura está implementada no Java desde a versão 1.0. Ela mapeia os valores por chave, cada valor tem a sua chave e ela não aceita nenhum valor e nenhuma chave nulla. Tudo dentro desta estrutura é um objeto, qualquer tipo de objeto pode ser usado dentro desta estrutura. A diferença dela para o HashMap é que ela é sincronizada(pode ser acessada por várias threads?? não entendi esta parte…).

  • Possui fator de carga que vai de 0.0 a 1.0(Está relacionado a performance do Hashtable, tempo de busca e gasto de memória)
  • A busca é realizada assim: Cada chave gera um código hash, e cada código hash é jogado dentro da tabela de hash, e de acordo com que você insere um novo elemento, a tabela de hash vai crescendo, e vai adicionando nesta tabela por ordem. Na hora de buscar um elemnto por exemplo, ela pega o código hash gerado por ele e procura na tabela hash, é isso?

Outra dúvida também é sobre o método hashCode e equals, vi falando que tenho de sobreescreve-los ou algo assim, não entendi muito bem. Por exemplo, quando vou usar o equals? Quando for comparar se uma chave ja existe la pra não adicionar outra igual?

E se o HashMap pode ser sincronizado, então porque usar o Hashtable? Creio que ele não tem vantagem nenhuma já que o HashMap pode ser sincronizado??
Bom pessoal, eu tenho muita dificuldade com interpretação e gostaria muito que vocês me ajudassem a entender isto, pois estou começando agora e estou com muitas dúvidas…
obrigado…