Hash: W największym skrócie żeby dostać się do jakiejś wartości, to wystarczy wszystkie takie posortowane wartości umieścić w tablicy. Dzięki temu znając indeks mamy cały obiekt kosztem zaledwie jednego dodawania indeksu do jej początku. Ktoś wykombinował, że przecież wszystko da się zamienić na indeks, a więc każdy rodzaj danych może być tak błyskawicznie uzyskiwany. Kod hash jest właśnie zamianą dowolnego zestawu danych na taki 32-bitowy indeks. Używanie jednak tablicy o wielkości zakresu integer jest zwykle niepraktyczne (2-4 miliardy elementów to trochę dużo), więc robi się tablice znacznie mniejsze, a indeksy będące hashami "zakręca" się wokół jej rozmiaru. To jednak oznacza, że pod konkretnym indeksem może znaleźć się więcej niż jedna wartość. Dlatego tablica taka musi zamiast przechowywania pojedynczych obiektów przechowywać ich listy. Ponieważ przy równomiernym rozkładzie indeksów takie listy są bardzo krótkie i zajmują tylko kilka pozycji, więc po indeksowaniu po prostu przeszukuje się taka listę i porównuje z tym czego się szukało (najpierw "niezawinięte" hashe (optymalizacja), a jeżeli to nie rozstrzygnie, to całe obiekty). Koszt przeszukanie kilku pozycji jest i tak rzędy wielkości mniej kosztowne niż gdyby trzeba było przeszukiwać i porównywać całą listę złożoną z tysięcy lub milionów elementów.
Dodatkowo najnowsze implementacje działają tak, że wielkość tablicy jest wielokrotnością 2, dzięki czemu indeksowanie sprowadza się do pojedynczej operacji AND z maską. Krótko mówiąc jest to bardzo szybki kontener na dane, które są dostępne prawie natychmiastowo. Obecnie zamiast tablic używa się mapy, czyli kontenery przechowujące parę klucz i wartość. W niektórych językach taka mapa jest podstawą przechowywania danych - np. PHP ma tylko typ tablicowy, który jest niczym innym jak hash mapą z uporządkowaną listą kluczy.