nO código do exemplo refere-se à coleção pelo tipo de sua interface (Set<String>) e não pelo tipo de sua implementação (HashSet<String>)
n
ncaso seja necessário trocar a implementação utilizada, apenas o construtor da coleção precisa ser alterado
n
nimpede o uso de operações disponíveis apenas em uma implementação específica, evitando erros resultantes da troca dessa implementação