2010-12-13 44 views
2

Je reçois des données d'un fichier CSV au format {timestamp}, {data1}, {data2}.Quel est un bon moyen de modéliser une base de données de type calendrier en Java?

Ce que je suis à la recherche est une façon saine d'esprit, sensible pour stocker ces données dans une structure de données, de sorte que je peux facilement faire ce qui suit:

  1. Pour un objet Date donné, trouver les données correctes associé à cette date.
  2. S'il n'y a pas de correspondance directe pour la date, recherchez les éléments précédents et suivants.

La première exigence est facilement satisfaite par une table de hachage. Le deuxième serait facile si un Hashtable avait un ordre inhérent, auquel cas je pourrais juste trouver la plus grande entrée qui est toujours en dessous de ma date donnée pour l'article précédent, et la suivante pour la suivante.

Puisque ce n'est pas le cas, qu'est-ce qu'une bonne structure de données à utiliser ici?

Répondre

2

Utilisez SortedMap.

Utilisez Map.get() pour récupérer les données correspondant exactement. Si aucune donnée n'est disponible, utilisez SortedMap.tailMap (date) et SortedMap.headMap (date) pour récupérer les éléments plus grands et moins que la date donnée.

+0

Génial. Merci beaucoup. – winsmith

+0

D'autres lecteurs doivent noter que SortedMap est abstrait. Pour l'instancier, utilisez TreeMap, comme dans 'SortedMap map = nouveau TreeMap ();' – winsmith