Gerçekleştİrmeler
Koleksiyonlar ve eşlemler için beş gerçekleştirme kategorisi vardır: Array (dizi), linked list (bağlanmış liste), hash (haş), linked hash (bağlanmış haş) ve tree (ağaç). Gerçekleştirme yöntemi kayıtları tutmak için önde gelen veri yapısını gösterir. Her gerçekleştirme kategorisinin kendi avantaj ve dezavantajları vardır. Doğru gerçekleştirmeyi seçmek uygulamalarınızın performansını geliştirebilir.
Dizi gerçekleştirmeleri kayıtları saklamak için bir dizi kullanır. ArrayList, List arayüzü için en çok tercih edilen gerçekleştirmedir, çünkü sabit zamanlı pozisyon erişimi önerir. Fakat, belirtilmiş bir dizide araya eklemek ve silmek pahalı olabilir, çünkü yeni dizi yaratma veya var olan dizinin elemanlarını kopyalama gerekebilir.
LinkedList eleman serilerini tutmak için başka bir seçenektir. Bu gerçekleştirme ayrı nesneleri ve bir sonraki ve bir önceki referansları tutmak için bir Entry nesnesi kullanır. Bu yüzden, başlangıca eleman eklemek ve yinelerken eleman ekleyip silmek çok daha hızlıdır, çünkü sadece ileri ve geri kayıtların ileri ve geri alanları değiştilmeye ihdiyaç duyar. Eğer programınız sık sık eleman ekliyorsa, siliyorsa ve elemanlar üzerinde yineliyorsa LinkedList gerçekleştirmesini düşünmelisiniz. Fakat, pozisyona bağlı erişimin bu gerçekleştirmede pahalı olduğu da unutmamalıdır.
Set ve Map haş tablolarıyla, ağaçlarla veya bağlanmış ağaçlarla gerçekleştirilir. Ağaç gerçekleştirmeleri veri yapısındaki kayıtları sıralı tutmak için kırmızı-siyah ağaçlar kullanırlar. Eğer kayıtları sıralı tutmak önemli ise TreeSet ve TreeMap gerçekleştirmeleri tercih edilmelidir. Kaplar içindeki nesneleri sıralamak için, ağaç geçekleştirmeleri nesneler sınıfı tarafından sağlanan Comparable ara yüzünü kullanabilirler veya TreeSet ve TreeMap'in yapılandırıcıları tarafından Comparator ara yüzü sağlanabilir. İlkel veri türleri için sarıcı sınıflar, String ve Date sınıfları Comparable arayüzünü gerçekleştirirler. Fakat, eğer kendi sınıfınızı kullanıyorsanız, sınıfınız compareTo() yöntemini kullanarak Comparable ara yüzünü gerçekleştirmelidir:
class MyClass implements Comparable {
    ...
    public int compareTo(Object o){
        ...
        // eğer bu nesne o'dan düşükse -1 döndürür
        // eğer bu nesne o'a eşitse 0 döndürür
        // eğer bu nesne o'dan büyükse -1 döndürür
    }
    ...
}
					
Comparable (karşılaştırılabilir) ara yüzünü gerçekleştiren sınıflarınızı bildirirken, karşılaştırmada kullanılan alanların sabit (yaratıldıktan sonra değişmez) olduklarından emin olmalısınız. Yoksa, Map veya Set nesnelerin durumu kap'a konduktan sonra değişirse, durabilirler.
Eğer nesneniz Comparable arayüzünü gerçekleştirmiyorsa, Comparator arayüzünü gerçekleştiren bir sınıf yaratabilirsiniz:
class MyComp implements Comparator{
    int compare(Object o1, Object o2){
        ...
        // eğer o1 o2'den düşükse -1 döndürür 
        // eğer o1 o2'ye eşitse 0 döndürür
        // eğer o1 o2'den büyükse 1 döndürür
    }
}
Bundan sonra bu sınıfın bir örneğini yaratabilir ve bunu Set veya Map yapılandırıcısına geçirebilirsiniz:
TreeSet s = new TreeSet(new MyComp());
TreeSet ve TreeMap ayrıca sırasıyla SortedSet ve SortedMap arayüzlerini de gerçekleştirirler. Bu arayüzler Set veya Map içindeki tek elemanlara (veya bir grup elemana) hızlı erişmek için faydalı fonksiyonlar tanımlarlar. SortedSet and SortedMap hakkında daha fazla bilgi almak için Java dokumanlarına başvurunuz.
Haş tabanlı gerçekleştirmeler, nesneler tarafından nesneleri bahsi geçen veri yapısına yerleştirmek için sağlanan bir sayı değeri döndüren hashCode() fonksiyonunu kullanırlar. Bu yüzden HashSet ve HashMap, TreeSet veTreeMap'den çok daha hızlıdır. Fakat, veri yapısındaki nesneleri sıralamak rastgeledir, yani sıralama tutulmaz. Eğer kayıt sıralaması önemli değilse ve performans ana kaygı ise haş gerçekleştirmeleri tercih edilmelidir.
Bağlanmış haş tabanlı gerçekleştirmeler haşları daha iyi performans için kullanırken, araya ekleme sırasını korurlar.