I feel that containsAll(Collection c) declaration in List and Set are redundant
No i dont think so we should call it to be redundant, its kinda Object Oriented Design what they have followed. List and Set have different implementation for containsAll(Collection c) method. So, they have made it quite meaningful by putting the same method in the two different interfaces.