Wednesday, 29 November 2017

Java Program to implement Bi Directional Map


Code:

import java.util.Scanner;
import java.util.HashMap;

/** class BiDrirectionalMap */
class BiDirectionalMap
{
    private HashMap keyVal;
    private HashMap valKey;

    /** constructor **/
    public BiDirectionalMap()
    {
        keyVal = new HashMap();
        valKey = new HashMap();
    }    
    /** function to clear maps **/
    public void clear()
    {
        keyVal.clear();
        valKey.clear();
    }
    /** function to get size of maps **/
    public int size()
    {
        return keyVal.size();
    }   
    /** function to insert element **/
    public void put(String key, String val)
    {
        keyVal.put(key, val);
        valKey.put(val, key);
    }    
    /** function to get element **/
    public String get(String ele)
    {
        String str = keyVal.get(ele);
        if (str == null)
              str = valKey.get(ele);

        return str;
    }      
    /** function to remove element **/
    public void remove(String key)
    {
        String val = keyVal.get(key);
        if (val != null)
        {
            keyVal.remove(key);
            valKey.remove(val);
        }
        else
        {
            val = valKey.get(key);
            if (val != null)
            {
                keyVal.remove(val);
                valKey.remove(key);
            }
            else
                System.out.println("\nError : Not found\n");  
        }
    }        
}

/** Class BiDirectionalMapTest **/
public class BiDirectionalMapTest
{
    public static void main(String[] args)
    {
        Scanner scan = new Scanner(System.in);
        System.out.println("Bi Directional Map Test\n");   

        BiDirectionalMap bdm = new BiDirectionalMap();

        char ch;
        /** Perform Bi Directional Map operations **/
        do    
        {
            System.out.println("\nBi Directional Map Operations\n");
            System.out.println("1. put ");
            System.out.println("2. get");
            System.out.println("3. remove");
            System.out.println("4. clear");
            System.out.println("5. size");

            int choice = scan.nextInt();            
            switch (choice) 
            {
            case 1 : 
                System.out.println("Enter key and value");
                bdm.put(scan.next(), scan.next() );                     
                break;                          
            case 2 : 
                System.out.println("Enter element");
                String ele = scan.next();
                String str = bdm.get(ele);
                if (str != null)
                    System.out.println("Result : "+ str);
                else
                    System.out.println("\nError : Not found\n");  
                break;        
            case 3 : 
                System.out.println("\nEnter element to be removed");
                bdm.remove(scan.next() );
                break;                                   
            case 4 : 
                System.out.println("\nBi Directional Map Cleared");
                bdm.clear();    
                break;    
            case 5 : 
                System.out.println("\nSize = "+ bdm.size() );
                break;         
            default : 
                System.out.println("Wrong Entry \n ");
                break;   
            }    

            System.out.println("\nDo you want to continue (Type y or n) \n");
            ch = scan.next().charAt(0);                        
        } while (ch == 'Y'|| ch == 'y');            
    }
}


Output:

Bi Directional Map Test


Bi Directional Map Operations

1. put
2. get
3. remove
4. clear
5. size
1
Enter key and value
green mango

Do you want to continue (Type y or n)

y

Bi Directional Map Operations

1. put
2. get
3. remove
4. clear
5. size
1
Enter key and value
banana yellow

Do you want to continue (Type y or n)

y

Bi Directional Map Operations

1. put
2. get
3. remove
4. clear
5. size
1
Enter key and value
red apple

Do you want to continue (Type y or n)

y

Bi Directional Map Operations

1. put
2. get
3. remove
4. clear
5. size
2
Enter element
red
Result : apple

Do you want to continue (Type y or n)

y

Bi Directional Map Operations

1. put
2. get
3. remove
4. clear
5. size
2
Enter element
mango
Result : green

Do you want to continue (Type y or n)

y

Bi Directional Map Operations

1. put
2. get
3. remove
4. clear
5. size
2
Enter element
apple
Result : red

Do you want to continue (Type y or n)

y

Bi Directional Map Operations

1. put
2. get
3. remove
4. clear
5. size
5

Size = 3

Do you want to continue (Type y or n)

y

Bi Directional Map Operations

1. put
2. get
3. remove
4. clear
5. size
3

Enter element to be removed
red

Do you want to continue (Type y or n)

y

Bi Directional Map Operations

1. put
2. get
3. remove
4. clear
5. size
2
Enter element
apple

Error : Not found


Do you want to continue (Type y or n)

y

Bi Directional Map Operations

1. put
2. get
3. remove
4. clear
5. size
2
Enter element
red

Error : Not found


Do you want to continue (Type y or n)

y

Bi Directional Map Operations

1. put
2. get
3. remove
4. clear
5. size
4

Bi Directional Map Cleared

Do you want to continue (Type y or n)

n



More Java Programs:
















100+ Best Home Decoration Ideas For Christmas Day 2019 To Make Home Beautiful

Best gifts for Christmas Day | Greeting cards for Christmas Day | Gift your children a new gift on Christmas day This Christmas d...