Java Collections Cheat Sheet

Java Collections Framework



Collections are most widely concept in java. Most of the time I get confused, when to use, what type of collections. If its the same with you, this post would make an  attempt to clear that confusion, I tried to list the parameters that can be used to make decision.

Topics:
Collections
Collections Interfaces
Collections Cheat Sheet
Collections Examples

Collection Framework:
Java Collection framework provides mechanism to store, retrieve and manipulate objects.
All collection interfaces and classes are present in java.util package.


Core Interfaces for Collections
Collection  is the root of the collection hierarchy

Sorted Set: A Set that maintain elements in sorted ascending order.
Sorted Map: A Map that maintains keys in sorted ascending order.

Decision to use which collection class depends on following factors:
  • Ordered
  • Duplicates
  • Synchronized
  • Not Ordered

Collection Interfaces:

Interfaces Definition has Duplicates
List It’s a data structure where stored objects can be accesible using index. Yes.
Map Data structure allows key value pair storage. No duplicate keys are allowed.Values can be duplicate.
Set it’s a data structure  that doesnot allow duplicate storage of elements . Elements cannot be accessed using index. No. Set doesnot allow duplicate elements
Queue ordered in on a FIFO Yes.
Deque ordered elements in either  LIFO and FIFO. Its a double-ended-queue is a linear collection of elements that supports the insertion and removal of elements at both end points Yes.


Collection Cheat Sheet:

Ordered : Elements are stored in a order and when iterator is used over this elements, user knows in what order elements can be retrieved.
Sorted : elements are stored in sorted order.This sorting order depends on natural ordering, or by a Comparator.
Thread safe:  Methods are implemented using synchronized. this can be used in a multi threaded environment. 

classes with collections. Maps doesn't implement interface Collection



Below parameters can be used to make choice of what data structures can be used.


Collection Name Implements Interface Ordered Sorted synchronized
(Thread safe)
 When to use it
Array List List  Yes No No 1. when retrieval/accessing elements  is primary aim
2. Random access to elements using their index
Vector List  Yes No Yes when elements  thread safety is more important with retrieval of elements
Linked List List, Deque  Yes No No  When insertion and deletion is primary task, not accessing the elements.
HashSet Set  No No No If the requirement is only to have elements unique.
LinkedHashSet Set Yes No No If the requirement is to returns elements in the same order of insertion
TreeSet Set Yes Yes No Elements needs to be stored in sorted order. Default is ascending order
HashMap Map No No No If the requirement is faster access. No synchronization needed
HashTable Map No No Yes Used for faster access. No null keys are allowed
LinkedHashMap Map Yes No No If user wants  retrieve keys is the insertion order. Predictable iteration order is the requirement
TreeMap Map Yes Yes No If the requirement is sorted Map, with key value pair storage
ArrayDeque Deque Yes No No No Null values.  Cannot access elements using index. Can be used which allows efficient insertion and deletion at both ends. 
PriorityQueue Queue Yes No No No Null values.  Item that is removed from the queue is not necessarily the first one that was added. Rather, it is whatever item in the queue has the highest priority. 

Collection Examples:
 All the examples are compiled on java 1.7 update 21



ArrayList Example:

Standard Arrays are fixed cannot  grow and shrink in size .  ArrayList solves this problem. ArrayList can dynamically increase or decrease in size. It has a  initial size, When this size is exceeded, the collection is automatically enlarged. When objects are removed, the array may be shrunk. It can be asssed with indexes.

import java.util.ArrayList;
public class ArrayListExample {
    public static void main(String[] args) {
       
        ArrayList<Integer> arrayList = new ArrayList<Integer>(10);
        arrayList.add(45);
        arrayList.add(48);
        arrayList.add(4);
        // retrieve an element using index
        System.out.println( " Accessing using index " + arrayList.get(2) );
        arrayList.remove(1);
        // let us print all the elements
        System.out.println( " print ArrayList elements " + arrayList) ;

    }

}


HashSet Example:
import java.util.HashSet;

public class HashSetExample {

    public static void main(String[] args) {

        HashSet<Integer> hashset = new HashSet<Integer>();
      
        //returns true if the element is inserted
        if ( hashset.add(34) )
            System.out.println(" Element is inserted");
        else
            System.out.println("Element Cannot be inserted, duplicate");
  
        if ( hashset.add(34) )
            System.out.println(" Element is inserted");
        else
            System.out.println("Element Cannot be inserted, duplicate");
      
      
      
  
    }

}




 TreeMap Example:

   import java.util.Iterator;
    import java.util.Map;
    import java.util.Map.Entry;
    import java.util.Set;
    import java.util.TreeMap;
   
    public class TreeMapExample {
        public static void main(String[] args) {
            TreeMap<String,Integer> treemap = new TreeMap<String,Integer>();
            treemap.put("first", 1);
            treemap.put("second", 2);
            treemap.put("three", 3);
            treemap.put("four", 4);
           
           
            System.out.println(treemap);
            Set<Entry<String, Integer>> entrySet = treemap.entrySet();
            Iterator<Entry<String, Integer>> iterator = entrySet.iterator();
           
            while(iterator.hasNext())
            {
                Map.Entry me = (Map.Entry)iterator.next();
                System.out.println(me.getKey());
               
            }
        }
   
    }






Good to know facts:
=======================================================
1. When to use
Hash Map :Inserting , deletion are required.
Tree Map: To traverse already sorted list

=======================================================
List of thread safe classes in collection

Vector, Hash table,  Stack are synchronized classes can be termed as thread-safe..

=======================================================
What is difference between HashMap vs  Hashtable
------------------------------------------------------------------------------------
HashMap                                                  |         HashTable
------------------------------------------------------------------------------------
Allows null keys and null values                |       Doesn't allow null values
Non Synchronized(not thread safe)            |      Synchronized (thread safe)

===================================================

Sets doesn't allow duplicates.

===================================================

Maps duplicate keys are not allowed.

=================================================


1 comment: