Skip to main content

What is Collection framework in Java? Why we need Collection? Collection hierarchy in Java

Guide to Collection framework in Java with Examples | Guide for choose which collection to use

Collection framework in Java. need of Collection in Java

In simple term, The Java Collections Framework is a collection of interfaces and classes which helps in storing and processing the data efficiently.

Java collections refer to a collection of individual objects that are represented as a single unit.

Whoever class or interface implements or extends Collection interface, they can use all method of collection interface. Some of frequently used methods :

  • add()
  • addAll()
  • remove()
  • removeAll()
  • size()
  • clear()
  • isEmpty()
  • contains() 

Why we need Collection in Java?

As we all know we can use java Arrays for store, alter, delete, sort data then why we still need Collection?

  • Arrays are not resizable and Collection is resizable.
  • Java Collections Framework provides lots of different useful data types, like Linkedlist allows insertion anywhere in constant time.
  • There are different implementation you can choose from for the same set of services : like, ArrayList or LinkedList, HashSet or SortedSet, etc.
  • Collection allows programmers to write readable and maintainable code.  

Collection framework hierarchy :

Collection framework class and interface hierarchy | Map interface

List Interface :

  • List is child interface of Collection
  • Duplicates are allowed and insertion order must be preserved

Classes under List interface :

  • ArrayList (Class) (1.2 version)
  • LinkedList (Class) (1.2 v)
  • Vector (Class) (1.0 v)
    • Stack (Class) (1.0 v)

Set Interface :

  • List is child interface of Collection
  • Duplicates are not allowed and insertion order does not preserved

Classes and Interfaces under Set interface :

  • HashSet (Class) (1.2 v)
  • LinkedHashSet (Class) (1.4 v)
  • SortedSet (Interface) (1.2 v)
    • NavigableSet (Interface) (1.6 v)
      • TreeSet (Class) (1.2 v)

Queue Interface :

  • Queue follows First In First Out (FIFO) order.

Classes and Interfaces under Set interface :

  • PriorityQueue (Class) (1.5 v)
  • BlockingQueue (Interface) (1.5 v)

Map Interface :

If we want to represent group of object as key-value pair then we should use Map interface. 

Map is not child interface of Collection.

  • Both keys and values are Objects only 
  • Duplicates keys are not allowed but values can be duplicated

Classes and Interfaces under Map interface :

  • HashMap (Class) (1.2 v)
    • LinkedHashMap (Class) (1.4 v)
  • SortedMap (Interface) (1.2 v)
    • NavigableMap (Interface) (1.6 v)
      • TreeMap (Class) (1.2 v)

 

How to choose which collection we have to use in our code?

List :

    ArrayList : 

  • It is combination of Array and List.
  • Use when does not want to use Static array.
  • Insertion order preserve and Duplication of data does not matter. Arraylist is sequential list.
  • Better for storing and retrieval data frequently. 

    LinkedList :

  • Insertion order preserve and Duplication of data does not matter.
  • Better for data manipulation (insertion, deletion).

    Vector :

  • Vector is same as ArrayList except that all the Vector class methods are synchronized. Means vector class is Thread safe. 

    Stack :

  • Want to use Last In First Out (LIFO) order of data. 

Set :

    HashSet :

  • Duplication is not allowed.
  • Insertion order does not preserve.

    LinkedHashSet :

  • Want to maintain insertion order.
  • Duplicates are not allowed.

    TreeSet :

  • Want to sorted data.
  • Duplicates are not allowed. 

Queue :

    PriorityQueue :

  • Want to use First In First Out (FIFO) order. first element is removed first and last element is removed at last. 

Map :

    HashMap :

  • When you want to store data as key-value pair. (Name -> Mobile No.).
  • Does not maintain insertion order.
  • Can store only one NULL key and many NULL value.
  • Key contains only unique data, but value can be duplicates.

    LinkedHashMap :

  • Same as HashMap.
  • Insertion order is maintain.  

    TreeMap :

  • Also store Key-value pair.
  • Want to sorted elements. Elements sorted by ascending order.
  • Does not contains any NULL key. but value can.
  • When read/write of elements is frequent, then TreeMap is good choice.   


Happy learning... Happy coding...

Other articles :


 

Comments

Popular posts from this blog

Plus Minus HackerRank Solution in Java | Programming Blog

Java Solution for HackerRank Plus Minus Problem Given an array of integers, calculate the ratios of its elements that are positive , negative , and zero . Print the decimal value of each fraction on a new line with 6 places after the decimal. Example 1 : array = [1, 1, 0, -1, -1] There are N = 5 elements, two positive, two negative and one zero. Their ratios are 2/5 = 0.400000, 2/5 = 0.400000 and 1/5 = 0.200000. Results are printed as:  0.400000 0.400000 0.200000 proportion of positive values proportion of negative values proportion of zeros Example 2 : array = [-4, 3, -9, 0, 4, 1]  There are 3 positive numbers, 2 negative numbers, and 1 zero in array. Following is answer : 3/6 = 0.500000 2/6 = 0.333333 1/6 = 0.166667 Lets see solution Solution 1 import java.io.*; import java.math.*; import java.security.*; import java.text.*; import java.util.*; import java.util.concurrent.*; import java.util.function.*; import java.util.regex.*; import java.util.stream.*; import static jav...

Flipping the Matrix HackerRank Solution in Java with Explanation

Java Solution for Flipping the Matrix | Find Highest Sum of Upper-Left Quadrant of Matrix Problem Description : Sean invented a game involving a 2n * 2n matrix where each cell of the matrix contains an integer. He can reverse any of its rows or columns any number of times. The goal of the game is to maximize the sum of the elements in the n *n submatrix located in the upper-left quadrant of the matrix. Given the initial configurations for q matrices, help Sean reverse the rows and columns of each matrix in the best possible way so that the sum of the elements in the matrix's upper-left quadrant is maximal.  Input : matrix = [[1, 2], [3, 4]] Output : 4 Input : matrix = [[112, 42, 83, 119], [56, 125, 56, 49], [15, 78, 101, 43], [62, 98, 114, 108]] Output : 119 + 114 + 56 + 125 = 414 Full Problem Description : Flipping the Matrix Problem Description   Here we can find solution using following pattern, So simply we have to find Max of same number of box like (1,1,1,1). And ...