Při deklaraci atributů, parametrů a proměnných je vhodné prvek deklarovat pomocí nejobecnějšího typu, který poskytuje potřebnou funkcionalitu (rozhraní, které dané metody deklaruje) a definovat pomocí potřebné implementace viz následující příklad:
Set<Vertex2D> vertices = new HashSet<>().
V příkladu je navíc použit operator diamant (<>), kdy je zbytečné používat typ prvku kolekce - odvodí se z typu u deklarace.
Většinou je vhodné u prvků kolekcí překrýt metody equals a ... (viz přednáška o equals). Některé kolekce využívají druhou z dvojice metod pro efektivní ukládání prvků do kolekce,
Implementace equals:
Na co brát ohled při volbě kolekce pro implementaci:
Ve třídě CollectionPolygon v metodě withoutLeftmostVertices můžete s výhodou využít množinové operace:
Komparátor/lambda výraz se uspořádáné kolekci předává jako parametru konstruktoru s tím, že prvku jsou následně přidány pomocí metody addAll
V případě nejasností nebo problémů s implementací se neváhejte zeptat v diskuzním fóru Vaší semenární skupiny, připadně předmětu.