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

Queen's Attack II HackerRank Solution in Java with Explanation

Queen's Attack II Problem's Solution in Java (Chessboard Problem)   Problem Description : You will be given a square chess board with one queen and a number of obstacles placed on it. Determine how many squares the queen can attack.  A queen is standing on an n * n chessboard. The chess board's rows are numbered from 1 to n, going from bottom to top. Its columns are numbered from 1 to n, going from left to right. Each square is referenced by a tuple, (r, c), describing the row r and column c, where the square is located. The queen is standing at position (r_q, c_q). In a single move, queen can attack any square in any of the eight directions The queen can move: Horizontally (left, right) Vertically (up, down) Diagonally (four directions: up-left, up-right, down-left, down-right) The queen can move any number of squares in any of these directions, but it cannot move through obstacles. Input Format : n : The size of the chessboard ( n x n ). k : The number of obstacles...

Simple Text Editor HackerRank Solution in Java with Explanation

Simple Text Editor HackerRank Solution in Java with Explanation Problem Description : Implement a simple text editor. The editor initially contains an empty string S. Perform Q operations of the following 4 types: append (W) - Append string W to the end of S. delete (k) - Delete the last K characters of S. print (k) - Print the kth character of S. undo () - Undo the last (not previously undone) operation of type 1 or 2, reverting S to the state it was in prior to that operation. Example : Input : S = "abcde" Operations = ["1 fg", "3 6", "2 5", "4", "3 7", "4", "3 4"] index   S          ops[index]    explanation -----   ------     ----------    ----------- 0       abcde      1 fg          append fg 1       abcdefg    3 6        ...