Olá pessoal estou enfrentando um pequeno com HashMap , explicarei melhor com exemplo;
Estou importando um arquivo.txt de escalas do funcionário em dia , nessas escalas pode haver no mesmo dia a escala normal de trabalho mais treinamento , hora extra e etc:
ex:
Mat Data Inicio Fim Tipo
1779 11/12/2006 8:00 14:00 Normal
17179 11/12/2006 15:00 17:00 Extra
Acontece que programa foi definido que a chave do HashMap seria a data de trabalho o que acontece ele pega a primeira escala das 8:00 as 14:00 e armazena no hashMap , na proxima ele verifica que existe a 11/12/2006 e sobrescreve o horário tirando 8:00 as 14:00 para 15:00 as 17:00 isso gera falta e problemas para RH o problema que saída do arquivo deve ser exemplo acima para outro programa interpretar , ai esta um problema há um jeito em fazer um put no HashMap sem que ele não sobrescreva o valor antigo?
Pela doc do Java
Associates the specified value with the specified
key in this map. If the map previously contained a mapping for the key, the old value is replaced.
Thingol o programa já testa com containsKey se no HashMap há um Data , o cara que desenvolveu colocou como key a data de trabalho se ele achar a Key ele pula mas problema que em um dia a pessoa pode ter várias escalas e no final ele fazia:
Aqui ele sobrescrevia o valor antigo no HashMap
this.diasTrabalhados.put(diaTrabalhado.getData() , diaTrabalhado);
E na saida do arquivo saia com a ultima escala e desprezava anterior
Há possibilidade de ordenar um HaspMap por dois valores tipo um orderby do SQL :ORDERBY matricula , dataEntrada ?
Se você precisa de um Map ordenado (SortedMap), é melhor usar um TreeMap. Ele é um pouco mais lento (O(N log N) em vez de O(N)), mas muitas vezes compensa usar um SortedMap. (Eu mesmo uso mais SortedMap que HashMap, devido a essa propriedade de deixar os dados ordenados.)