¿Por qué Google construyó todo esto, cuando podría haber intentado mejorar las Colecciones de Apache Commons?
Las Colecciones de Apache Commons claramente no satisfacían nuestras necesidades. No utiliza genéricos, lo cual es un problema para nosotros ya que odiamos recibir advertencias de compilación de nuestro código. También ha estado en un "patrón de espera" durante mucho tiempo. Pudimos ver que requeriría una inversión bastante grande de nuestra parte para arreglarlo hasta que estuviéramos felices de usarlo, y mientras tanto, nuestra propia biblioteca ya estaba creciendo orgánicamente.
Una diferencia importante entre la biblioteca Apache y la nuestra es que nuestras colecciones se adhieren muy fielmente a los contratos especificados por las interfaces JDK que implementan. Si revisa la documentación de Apache, encontrará innumerables ejemplos de violaciones. Se merecen el crédito por señalarlos con tanta claridad, pero aun así, ¡desviarse del comportamiento de cobranza estándar es arriesgado! Debes tener cuidado con lo que haces con tal colección; los errores siempre están esperando a suceder.
Nuestras colecciones están completamente generadas y nunca violan sus contratos (con excepciones aisladas, donde las implementaciones de JDK han establecido un fuerte precedente para violaciones aceptables). Esto significa que puede pasar una de nuestras colecciones a cualquier método que espere una Colección y sentirse bastante seguro de que las cosas funcionarán exactamente como deberían.