3.9.1. Java

Programovací jazyk Java nabízí většinu z uvedených abstraktních datových typů jako součást standardního balíku java.util. Najdeme v něm dvě relativně samostatné hierarchie rozhraní a tříd. První z nich vychází z rozhraní Collection specializovaného na seznamy a množiny. K dispozici je seznam implementovaný dynamickým polem (ArrayList) a obousměrně vázaný seznam (LinkedList). Množina je implementována buď pomocí uspořádaného stromu (TreeSet) nebo jako tabulka s rozptýlenými položkami (HashSet), doplněná případně ještě obousměrně vázaným seznamem položek (LinkedHashSet) umožňujícím systematický průchod všemi položkami tabulky. K těmto kolekcím lze přiřadit také základní jednosměrný iterátor (Iterator) a obousměrný iterátor (ListIterator).

Schéma na Obr. 3.14 znázorňuje v poněkud zjednodušené podobě vzájemné vztahy těchto rozhraní a tříd. Jsou v něm vynechány některé pomocné implementační třídy a třídy označené v současné verzi za již zastaralé (Vector, Stack, Hashtable).

Obrázek 3.15. Hierarchie rozhraní a tříd kolekcí (Java)

Další hierarchie vychází z rozhraní Map pro zobrazení (vyhledávací tabulku) a zahrnuje implementaci založenou na tabulce s rozptýlenými položkami (HashMap), případně opět doplněnou obousměrným seznamem položek (LinkedHashMap), a implementaci vycházející ze seřazeného stromu (TreeMap). Ke každému zobrazení lze získat samostatně kolekci klíčů a kolekci hodnot, případně kolekci uspořádaných dvojic klíčů a hodnot, které implementují rozhraní Map.Entry (jedná se o rozhraní definované uvnitř rozhraní Map).

Obrázek 3.16. Hierarchie rozhraní a tříd zobrazení (Java)