And one recommendation, if you plan to implement your own collection interface consider extending corresponding abstract class, but not implementing interface itself, cause abstract classes implement methods general to the interface.
Look at: AbstractCollection, AbstractSet, AbstractList