Google neden bunun yerine Apache Commons Koleksiyonlarını geliştirmeye çalıştığında tüm bunları oluşturdu?
Apache Commons Koleksiyonları çok net bir şekilde ihtiyaçlarımızı karşılamadı. Kodumuzdan derleme uyarıları almaktan nefret ettiğimiz için bizim için bir sorun olan jenerik ilaç kullanmıyor. Aynı zamanda uzun zamandır bir “tutma modeli” içerisindedir. Kullanmaktan memnun olana kadar düzeltmek için bizden oldukça büyük bir yatırım gerektirdiğini görebiliyorduk ve bu arada kendi kütüphanemiz zaten organik olarak büyüyordu.
Apache kütüphanesi ve bizimkiler arasındaki önemli bir fark, koleksiyonlarımızın uyguladıkları JDK arayüzleri tarafından belirlenen sözleşmelere çok sadık bir şekilde uymalarıdır. Apache belgelerini incelerseniz, sayısız ihlal örneği bulacaksınız. Bunları bu kadar net bir şekilde belirttikleri için hak ediyorlar, ancak yine de standart toplama davranışından sapmak riskli! Böyle bir koleksiyonla ne yaptığınıza dikkat etmelisiniz; böcek her zaman sadece olmasını bekliyor.
Koleksiyonlarımız tamamen doğrulanmıştır ve sözleşmelerini asla ihlal etmemektedir (JDK uygulamalarının kabul edilebilir ihlaller için güçlü bir örnek oluşturduğu izole istisnalar hariç). Bu, koleksiyonlarımızdan birini bir Koleksiyon bekleyen herhangi bir yönteme aktarabileceğiniz ve her şeyin gerektiği gibi çalışacağından emin olabileceğiniz anlamına gelir.