HashSet vs HashMap vs HashTable in java

HashMap and Hashtable stores values in key-value pair. HashSet contains unique elements and HashMap, HashTable contains unique keys. Having these similarities they have some differences also.
 

HashSet:

HashSet inherits AbstractSet class and implements Set interface. Set objects are always unique and no duplicate objects are allowed. One null key value is allowed. The hashing mechanism is used to insert the objects into a HashSet.

Example

import

java.util.*

;

public

class

Main

{

 

public

static

void

main

(

String

args

[

]

)

{

//Creating HashSet Object

HashSet

angularDevepolers

=

new

HashSet

(

)

;

 

//Adding objects in HashSet

angularDevepolers.

add

(

"Navdeep"

)

;

angularDevepolers.

add

(

"Anil"

)

;

angularDevepolers.

add

(

"Lokesh"

)

;

angularDevepolers.

add

(

"Sushil"

)

;

angularDevepolers.

add

(

"Amrita"

)

;

 

//Printing HashSet

System

.

out

.

println

(

angularDevepolers

)

;

}

}

import java.util.*;
public class Main {
public static void main(String args[])
{
//Creating HashSet Object
HashSet angularDevepolers = new HashSet();
//Adding objects in HashSet
angularDevepolers.add(“Navdeep”);
angularDevepolers.add(“Anil”);
angularDevepolers.add(“Lokesh”);
angularDevepolers.add(“Sushil”);
angularDevepolers.add(“Amrita”);
//Printing HashSet
System.out.println(angularDevepolers);
}
}

Output

[

Amrita, Sushil, Navdeep, Lokesh, Anil

]

[Amrita, Sushil, Navdeep, Lokesh, Anil]

HashMap:

HashMap class in java, implements the map interface by using a HashTable. It inherits AbstractMap class and implements the Map interface. It represents a group of objects and every object will be in key-value pair form. It maintains no order for its elements. Duplicate key is not allowed. It can have only one null as key and multiple null as values.

Example

import

java.util.*

;

public

class

Main

{

 

public

static

void

main

(

String

args

[

]

)

{

//Creating HashMap Object

HashMap

<

Integer

,String

>

angularDevepolers

=

new

HashMap

<

Integer

,String

>

(

)

;

 

//Adding objects in HashMap

angularDevepolers.

put

(

1

,

"Navdeep"

)

;

angularDevepolers.

put

(

4

,

"Anil"

)

;

angularDevepolers.

put

(

5

,

"Lokesh"

)

;

angularDevepolers.

put

(

2

,

"Sushil"

)

;

angularDevepolers.

put

(

3

,

"Amrita"

)

;

 

//Printing HashMap objects

for

(

Map.

Entry

entry

:

angularDevepolers.

entrySet

(

)

)

{

System

.

out

.

println

(

entry.

getKey

(

)

+

" - "

+

entry.

getValue

(

)

)

;

}

}

}

import java.util.*;
public class Main {
public static void main(String args[])
{
//Creating HashMap Object
HashMap<Integer,String> angularDevepolers = new HashMap<Integer,String>();
//Adding objects in HashMap
angularDevepolers.put(1, “Navdeep”);
angularDevepolers.put(4, “Anil”);
angularDevepolers.put(5, “Lokesh”);
angularDevepolers.put(2, “Sushil”);
angularDevepolers.put(3, “Amrita”);
//Printing HashMap objects
for (Map.Entry entry : angularDevepolers.entrySet()) {
System.out.println(entry.getKey() + ” – ” + entry.getValue());
}
}
}

Output

1

-

Navdeep

2

-

Sushil

3

-

Amrita

4

-

Anil

5

-

Lokesh

1 – Navdeep
2 – Sushil
3 – Amrita
4 – Anil
5 – Lokesh

 

Hashtable:

Hashtable inherits Dictionary class and implements Map interface. Hashtable contains elements/objects/items in key-value pair and does not allow any duplicate key. It is Thread-Safe because of its synchronized nature. The null is not allowed for both key and value. The hashcode() method is used to find the position of the elements.

Example

import

java.util.*

;

public

class

Main

{

 

public

static

void

main

(

String

args

[

]

)

{

//Creating Hashtable Object

Hashtable

<

Integer

,String

>

angularDevepolers

=

new

Hashtable

<

Integer

,String

>

(

)

;

 

//Adding objects in Hashtable

angularDevepolers.

put

(

1

,

"Navdeep"

)

;

angularDevepolers.

put

(

4

,

"Anil"

)

;

angularDevepolers.

put

(

5

,

"Lokesh"

)

;

angularDevepolers.

put

(

2

,

"Sushil"

)

;

angularDevepolers.

put

(

3

,

"Amrita"

)

;

 

//Printing Hashtable objects

for

(

Map.

Entry

entry

:

angularDevepolers.

entrySet

(

)

)

{

System

.

out

.

println

(

entry.

getKey

(

)

+

" - "

+

entry.

getValue

(

)

)

;

}

}

}

import java.util.*;
public class Main {
public static void main(String args[])
{
//Creating Hashtable Object
Hashtable<Integer,String> angularDevepolers = new Hashtable<Integer,String>();
//Adding objects in Hashtable
angularDevepolers.put(1, “Navdeep”);
angularDevepolers.put(4, “Anil”);
angularDevepolers.put(5, “Lokesh”);
angularDevepolers.put(2, “Sushil”);
angularDevepolers.put(3, “Amrita”);
//Printing Hashtable objects
for (Map.Entry entry : angularDevepolers.entrySet()) {
System.out.println(entry.getKey() + ” – ” + entry.getValue());
}
}
}

Output

5

-

Lokesh

4

-

Anil

3

-

Amrita

2

-

Sushil

1

-

Navdeep

5 – Lokesh
4 – Anil
3 – Amrita
2 – Sushil
1 – Navdeep

 

Difference between HashSet, HashMap, and HashTable in java

HashMapHashSetHashtableIt allows one null for key and multiple null for valuesIt can have a single null value.It does not allow null for key as well as for value.It does not maintain any order among its objects.It does not maintain any order among its objects.It does not maintain any order among its objects.It uses put method to insert a new element.It uses add method to insert a new element.It uses put method to insert a new element.It is not Thread-Safe because it is not Synchronized but it gives better performance.Like HashMap, it is not Thread-Safe because it is not Synchronized.It is Thread-Safe because it is Synchronized.

Java interview questions on collections

Please Share