Чому Google створив усе це, коли міг намагатися покращити колекції Apache Commons?
Колекції Apache Commons дуже очевидно не відповідали нашим потребам. Він не використовує дженерики, що є проблемою для нас, оскільки ми ненавидимо отримувати попередження про компіляцію з нашого коду. Він також давно перебуває у "схемі тримання". Ми могли бачити, що для того, щоб виправити це, нам знадобиться досить велика інвестиція, поки ми з радістю не використаємо її, а тим часом власна бібліотека вже органічно зростала.
Важливою відмінністю бібліотеки Apache від нашої є те, що наші колекції дуже сумлінно дотримуються договорів, визначених інтерфейсами JDK, які вони реалізують. Якщо ви переглянете документацію Apache, ви знайдете незліченну кількість прикладів порушень. Вони заслуговують на заслугу за те, що вони це чітко вказали, але все ж відхилятися від стандартної поведінки колекціонується ризиковано! Ви повинні бути обережними, що ви робите з такою колекцією; помилки завжди просто чекають, що станеться.
Наші колекції повністю узагальнені та ніколи не порушують їхніх контрактів (за окремими винятками, де впровадження JDK встановило вагомий прецедент для прийнятних порушень). Це означає, що ви можете передати одну з наших колекцій будь-якому методу, який очікує на колекцію, і ви впевнені, що все буде працювати саме так, як слід.