What is difference between Set and List interface in Java - Collection
List and Set in Java
What is difference between List and Set Collection class in Java and When do you use List and Set collection is one of the frequently asked but tricky Java interview question, especially the usage part. In order to know where to use List collection and where to use Set collection, Its important to understand difference between List and Set in Java. Both List and Set Collection classes are derived from java.util.Collection interface and all the operations which are applicable for Collection interface is applicable to List and Set in Java like add() , addAll(), remove() and removeAll(). In this Java tutorial we will see What are main differences between Set and List interfaces and Where to use Set interface and where to use List interface in Java.
Set vs List interface in Java
here are list of differences between Set and List interface in Java, All these differences are also applicable to various implementation of List and Set interface as well like Difference between ArrayList and HashSet, Difference between LinkedList and HashSet in Java etc.
1) One of the fundamental difference between List and Set interface is that, List interface allows duplicates objects stored in List while Set does not allow duplicates. Set implementation classes like HashSet, TreeSet will always contain Unique elements. for example if you create a Set of String like Set<String> and stored "abcd" on it then you can not another String "abcd" on this Set but you can do same with any List implementation like ArrayList or LinkedList in Java.
2) Another important difference between List and Set interface is that, List is an ordered collection while Set is an unordered collection. This is a very useful feature if you want to maintain orders like FIFO(First In First Out) etc. What this means is that if we store two objects A and B in any List implementation like ArrayList, Vector and LinkedList they will be stored in the ordered they are inserted i.e. first element in the List would be A and second element in the List would be B and you can retrieve them by calling get(0) and get(1), Also when you iterate over List they will be processed in same order. On the other hand Set interface doesn't maintain any Order and any Set implementation like HashSet will not guarantee on which order elements will be stored. On the other hand SortedSet like TreeSet guarantees particular sorting order based upon which comparator or comparable are used, but they don't maintain insertion order.
These were some of the main differences between List and Set interface in Java and by knowing these differences you can decide where to use List collection and where to use Set collection in Java. In summary use List collection like ArrayList, LinkedList if you have duplicates to store and want to maintain order while use Set collection like HashSet if you want to store only unique elements in the Set without any order guarantee.
Some of the other Interview article you may like