This article will be looking into one of the most popular questions in Java Language – What is Collection in Java? Also, what do you mean by Collections in Java? Are Collection and Collections the same or different in Java?
What is Collection?
Collection can simply be described as an Interface. With the help of Collection, we can easily group various objects into a single unit. Collection forms the root or head of the hierarchy of interfaces. If you are well aware of the C++ language, consider the concept of Collection to be very similar to Containers in C++ language. The other sub interfaces of this hierarchy are Sets, Lists, Maps, Queue, Deque, etc.
Java JDK does not allow us to directly manipulate the Container root interface but does allow us to have direct access to its sub-interfaces mentioned above. There are also sub-interfaces to which we can have indirect access. Examples of such are – ArrayList, PriorityQueue, Vector, HashSet, etc.
Need For Collection?
These Collection interfaces help us in dealing with various objects by grouping them efficiently and performing operations accordingly. These objects might be similar or different from each other. Based on the objects and their way of dealing with individual objects, we have the above-mentioned sub-interfaces.
Let us look into detail some of the most common Collection interfaces:
- Set – The most important thing about Sets is that Sets should never contain any duplicate element or object. This Set Interface can be obtained from java. util package. Sets do not return their elements in their collection in any predictable order. It is unordered, and many Java developers often forget this fact and thus face bugs in their code.
EnumSet, HashSet, LinkedHashSet, TreeSet, ConcurrentSkipList Set etc are some classes which can be implemented on the Set interface.
- List – List implementation can be thought of as something similar to Python Lists, but they do have some differences. List interfaces in Java are collections of ordered elements or objects. They are sorted. Moreover, unlike Sets, Lists can allow duplicate elements in their collection. Like an Array, a List’s elements can be accessed based on its elements’ index or position. Some basic operations using Lists are – Searching for an element, Accessing an element from the list, etc.
Vector, Stack, LinkedList, ArrayList, CopyOnWriteArrayList are some of the most commonly used classes which can be used with List interfaces.
- Map – For those well acquainted with Python, Map Interface is very similar to the Dictionary data structure in Python Language. Using the Map interface, we can group and store data elements in key-value pairs. As evident from the fact, each key is unique in a Map, and hence there are no duplicate keys. Using the key, its corresponding value is returned.
HashMap, HashTable, EnumMap, TreeMap, IdentityHashMap, WeakHashMap are some classes that can be implemented with the Map interface.
- Stack – Most of the programmers are already familiar with Stacks and Queues (Queues discussed shortly). Stack interface is implemented based on the usual LIFO data structure, i.e., Last In First Out. In a Stack, elements are pushed into one end of the stack, and elements pop out from the same end of that stack.
- Queue – Queue interface, based on the usual Queue Data Structure, implements a FIFO method. FIFO stands for First In First Out. In simple words, elements are pushed in one end of the Queue and popped out from the other end of that Queue.
What is Collections?
Collections is simply a utility class that is found in java. util package. The methods coming under the Collections class are compulsorily static methods.
Need For Collections?
Collections provide an easier go-to method for developers to perform certain basic operations on elements without needing to get into the nitty-gritty details of that operation. The developers can focus their attention on much bigger tasks or operations. Hence, Collections classes are extremely convenient among experienced developers.
For example – Collections class has a method to search for a particular element in a collection. It also has a method to perform sorting operations on the elements of the Collection interface.
Some commonly used Collections class are:
- Collections.binarySearch() – Searches for the desired element in a collection using the popular Binary Search Algorithm.
- Collections.sort() – Performs sorting operation on the specified Collection.
- Collections.max() – As evident from the name, it returns the Maximum element from a specified Collection.
- Collections.min() – Returns the Minimum element from a specified Collection.
- Collections.reverse() – Reverses the order of the elements present in the specified Collection.
- Collections.copy() – As the name suggests, using this, elements from one collection are copied to another collection.
Also Read: Java Project Ideas & Topics
So in Java, Collection and Collections are not at all the same thing. Collection is the interface where you group objects into a single unit. Collections is a utility class that has some set of operations you perform on Collection. Collection does not have all static methods in it, but Collections consist of methods that are all static.
What to learn next? Interested in Machine Learning and Artificial Intelligence? upGrad offers a PG Diploma in ML and AI in collaboration with IIIT-B that will make you extremely skilled in these most sought after fields, thus making your career a fruitful one.