I know what Sets are and common operations on sets like union, intersection, difference, subset. However i don’t understand in which situations are set based operations desired? Any real world examples? What are the advantages of using set vs using a list or a Hash? If i have two lists then i can find the union,intersection of those lists too. So why use Sets?
Edit
I specifically want to know real world situations where i should use a set instead of a list.
Setguarantees there there is no duplicate object in it.Listdoesn’t so you can have multiple entries of “equal” objects in a list. There are million of things that you can use set and it will make your life much easier, for example, a set of countries, a set of username, etc. If you use a list to store these data, you will need to check whether your list has already contained the same element or not before adding the new one unless the list is allowed to have duplicates.In other words, set may be considered as a list without any duplicates. However, the interface of Set and List aren’t really the same in Java. For example, you aren’t able to get the element at certain position in a set. This is because position is not important in the set (but it is for a list). Therefore, selecting which data collection to use depends entirely on the purpose.
I, myself, found that
Setis very useful in many cases and reduces the amount of checking for duplicates. One of my use cases is to use set to find how many chemical elements are in a molecule. The molecule contains a list of atom objects and each atom is associated to a element symbol so in order to find the type of element, I loop over all the atoms and add the element to an element set. All the duplicates are removed without hassle.