Il est fréquent que les données d'un problème soient des associations d'une clé (ou identificateur) et d'une information ; par exemple, l'association « nom 23#23 numéro de téléphone » dans un annuaire (c'est simplement ce que l'on appelle une application en mathématiques).
Une table est une structure de données associant une valeur à une clé, les clés ne pouvant être dupliquées, et au plus une valeur étant associée à chaque clé. Les opérations sur les tables sont spécifiées par l'interface Map ; clés et valeurs doivent être des références à des objets. Notons que l'interface Map n'est pas une sous-interface de Collection. Les principales méthodes sont :
SortedMap est une sous-interface de Map qui spécifie les tables dont l'ensemble des clés est ordonné : voir § 6.6.
Comme pour les collections, les tables sont hétérogènes : toutes les clés d'une table ne sont pas nécessairement du même type, ni toutes les valeurs. Comme la méthode get retourne un Object, un transtypage est nécessaire quand on sait quel est le type de la valeur. Voici un exemple où clés et valeurs sont des chaînes de caractères :
Map annuaire = ...; annuaire.put("ENPC", "+33 1 64 15 30 00"); annuaire.put("ENSG", "+33 1 64 15 30 01"); String s = (String) annuaire.get("ESIEE");