How to create custom HashSet in java

Here we will see how to define custom HashSet in Java. We will define add() method.

  • Define a class which extends AbstractSet<Object> and override all methods.
  • Define HashMap reference.
private HashMap<Object,Object> hashMapReference = null;
  • Create an object of the Object class.
private static final Object dummyObject = new Object();
  • Define default constructor and initialize HashMap reference inside this default constructor.
public CustomHashSet() {
		hashMapReference = new HashMap<>();
}
  • Define the add() method.
public boolean add(Object object) {
		return hashMapReference.put(object, dummyObject)==null;
}

 

Let’s integrate the code snippet.

package customhashset;
import java.util.*;
public class CustomHashSet extends AbstractSet<Object>
{
	private HashMap<Object,Object> hashMapReference = null;
	private static final Object dummyObject = new Object();
	
	public CustomHashSet() {
		hashMapReference = new HashMap<>();
    }
	
	public boolean add(Object object) {
		return hashMapReference.put(object, dummyObject)==null;
    }
	
public static void main(String[] args) {
	CustomHashSet hashSetObj =  new CustomHashSet();
	hashSetObj.add("ram");
	hashSetObj.add("mohan");
	hashSetObj.add("sohan");
	hashSetObj.add("ram");
	for(Object object : hashSetObj) {
		System.out.println(object.toString());
	}
	
}

@Override
public Iterator<Object> iterator() {
	
	  return hashMapReference.keySet().iterator();
}

@Override
public int size() {
	
	return hashMapReference.size();
}
}

Output is –

sohan
mohan
ram