Bazı programlar çok fazla nesne yaratırlar ve onlarla uğraşırlar. Bu tür bir programda, bu nesnelerin her birine referans olacak ayrı bir değişken bildirmek çok uygun olmaz. Referansları tutacak en uygun yol dizi kullanmak olabilir. Fakat, diziler yaratıldıklarında sabit büyüklüğe sahip olurlar. Bu yüzden, eğer yaratılacak nesnelerin sayısı belirsiz ise, her yeni nesne yaratıldığında dizinin büyüklüğünü değiştirecek yeni bir koda ihdiyacınız olacaktır. Bu daha büyük dizi yaratıp elemanları buna kopyalamak şeklinde olabilir.
Java platformunda nesnelere olan referansları tutmanın daha iyi bir yolu var: koleksiyonlar çerçevesini kullanmak. Java platformundaki koleksiyonlar çerçevesi, bir grup nesneyi depolamak ve değiştirmek için faydalı veri yapılarının ve algoritmalarin yüksek-performanslı gerçekleştirmelerini içerir. Bu da programların performansını arttırır. Ayrıca ortak bir çerçeve kullanmak programlama eforunu düşürür ve yazılımın tekrar kullanılmasını teşvik eder.
Koleksiyonlar çerçevesi çerçevenin temelini biçimlendiren arayüzlerden ve bu arayüzlerin gerçekleştirilmelerinden oluşur. Üç ana kap arayüzü vardır: List,
Set, ve Map. List
ve Set arayüzleri ortak bir arayüz olan Collection'dan çıkarılır. Bir Collection kişisel elemanların bir grubuyla ve bir Map anahtar-değerde nesne ikilileri ile uğraşır. Bu çerçeve iki veya üç gerçekleştime sağlar ki bunlar, bu arayüzler için somut sınıflardır. Bir kap yaratmak için, ihdiyacınıza göre bu gerçekleştirmelerden birini seçersiniz (özellikle performans konusu bu gerçekleştirmeyi seçerken önemli rol oynar).
Kaplar sadece Object'in altsınıflarının örneklerini tuttuklarından ilkel veri türlerini saklamak için, bunların ilgili sarıcı sınıfları kullanılabilir. Kapların toString() yöntemi kapların içindeki elemanları listelemek için kullanılabilir. Bu yöntem kaplar içindeki bireysel nesnelerin, elemanları sonuca yazdırmak için, toString() yöntemini kullanmalarını sağlar.