A Collection is a lot of work


interface Collection
{
  boolean add(Object o);
  boolean addAll(Collection c);
  void clear();
  boolean contains(Object o);
  boolean containsAll(Collection c);
  boolean equals(Object o);
  int hashCode();
  boolean isEmpty();
  Iterator iterator();
  boolean remove(Object o);
  boolean removeAll(Collection c);
  boolean retainAll(Collection c);
  int size();
  Object[] toArray();
  Object[] toArray(Object[] a);
}
Implementing a new Collection in Java carries what can only be described a degree of overhead. A lot of these methods - toArray for instance - might not even make sense in many cases. There are 15 methods there. In Java an iterator has three methods, and one of those you can ignore.

Other languages have different ideas about what constitutes a collection. Here's .NET.