The below code is bit confusing. AbstractSet already implements Set. So the question is if HashSet is extending Abstract set then why it needs to implement Set?
public class HashSet<E>
extends AbstractSet<E>
implements Set<E>, Cloneable, java.io.Serializable