Warum hat Google all dies erstellt, obwohl es stattdessen hätte versuchen können, die Apache Commons-Sammlungen zu verbessern?
Die Apache Commons-Sammlungen entsprachen eindeutig nicht unseren Anforderungen. Es werden keine Generika verwendet, was für uns ein Problem darstellt, da wir es hassen, Kompilierungswarnungen aus unserem Code zu erhalten. Es ist auch seit langer Zeit in einem "Warteschleifenmuster". Wir konnten sehen, dass es eine ziemlich große Investition von uns erfordern würde, um es zu reparieren, bis wir es gerne nutzen würden, und in der Zwischenzeit wuchs unsere eigene Bibliothek bereits organisch.
Ein wichtiger Unterschied zwischen der Apache-Bibliothek und unserer besteht darin, dass unsere Sammlungen die Verträge, die in den von ihnen implementierten JDK-Schnittstellen angegeben sind, sehr genau einhalten. Wenn Sie die Apache-Dokumentation lesen, finden Sie unzählige Beispiele für Verstöße. Sie verdienen Anerkennung dafür, dass sie so deutlich darauf hingewiesen haben, aber dennoch ist es riskant, vom Standard-Sammelverhalten abzuweichen! Sie müssen vorsichtig sein, was Sie mit einer solchen Sammlung machen; Bugs warten immer nur darauf, passiert zu werden.
Unsere Sammlungen werden vollständig generiert und verstoßen niemals gegen ihre Verträge (mit vereinzelten Ausnahmen, bei denen JDK-Implementierungen einen starken Präzedenzfall für akzeptable Verstöße darstellen). Dies bedeutet, dass Sie eine unserer Sammlungen an jede Methode übergeben können, die eine Sammlung erwartet, und sich ziemlich sicher sind, dass die Dinge genau so funktionieren, wie sie sollten.