This is a Java Program to implement Bi Directional Map. A bi-directional map is an associative data structure in which the (key, value) pairs form a one-to-one correspondence. Thus the binary relation is functional in each direction: value can also act as a key to key. A pair (a, b) thus provides a unique coupling between a and b so that b can be found when a is used as a key and a can be found when b is used as a key.
Here is the source code of the Java Program to implement Bi Directional Map. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
/**
** Java Program to implement Bi Directional Map
**/
import java.util.Scanner;
import java.util.HashMap;
/** class BiDrirectionalMap */
class BiDirectionalMap
{
private HashMap<String, String> keyVal;
private HashMap<String, String> valKey;
/** constructor **/
public BiDirectionalMap()
{
keyVal = new HashMap<String, String>();
valKey = new HashMap<String, String>();
}
/** 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 <String, String> 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');
}
}
Bi Directional Map Test Bi Directional Map <String, String> 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 <String, String> 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 <String, String> 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 <String, String> 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 <String, String> 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 <String, String> 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 <String, String> 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 <String, String> 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 <String, String> 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 <String, String> 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 <String, String> 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
Related posts:
Java Program to Generate a Random Subset by Coin Flipping
Instance Profile Credentials using Spring Cloud
Auditing with JPA, Hibernate, and Spring Data JPA
Lớp Arrarys trong Java (Arrays Utility Class)
Java Program to Implement Segment Tree
Add Multiple Items to an Java ArrayList
Hướng dẫn Java Design Pattern – MVC
Hướng dẫn Java Design Pattern – Interpreter
Converting between an Array and a List in Java
Java Program to Find Hamiltonian Cycle in an UnWeighted Graph
Hashing a Password in Java
@Order in Spring
Comparing Objects in Java
Hướng dẫn Java Design Pattern – Strategy
A Guide to EnumMap
Extract network card address
Java Program to Generate a Graph for a Given Fixed Degree Sequence
Using the Map.Entry Java Class
Jackson Ignore Properties on Marshalling
Hướng dẫn Java Design Pattern – Iterator
The Spring @Controller and @RestController Annotations
Java Program to Implement VList
Java – Byte Array to Reader
Spring Boot - Cloud Configuration Client
The Modulo Operator in Java
A Guide to JUnit 5
Spring WebClient Filters
Java Program to Implement Gauss Seidel Method
Java Program to Implement Hash Tables Chaining with List Heads
Convert String to int or Integer in Java
Converting String to Stream of chars
Introduction to Spring MVC HandlerInterceptor