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:
HashMap trong Java hoạt động như thế nào?
Remove HTML tags from a file to extract only the TEXT
Spring Boot - Servlet Filter
Getting Started with Forms in Spring MVC
Java Program to Implement TreeSet API
LinkedList trong java
Guide to the Fork/Join Framework in Java
Java – Write to File
Immutable Map Implementations in Java
Java Program to Implement Weight Balanced Tree
Introduction to Spring Cloud Stream
Spring Boot - Cloud Configuration Client
Java Program to Search for an Element in a Binary Search Tree
Jackson – Unmarshall to Collection/Array
Using the Map.Entry Java Class
Spring Boot Annotations
Instance Profile Credentials using Spring Cloud
Java Concurrency Interview Questions and Answers
Java Program to Compute Determinant of a Matrix
Getting Started with GraphQL and Spring Boot
Java Program to Find MST (Minimum Spanning Tree) using Prim’s Algorithm
Hashtable trong java
The Difference Between Collection.stream().forEach() and Collection.forEach()
Java 8 Predicate Chain
Java Program to Check Whether an Undirected Graph Contains a Eulerian Path
Java Program for Douglas-Peucker Algorithm Implementation
Sorting Query Results with Spring Data
Java Program to Implement Sorted Circularly Singly Linked List
File Upload with Spring MVC
Guide to WeakHashMap in Java
Java Program to Implement Disjoint Sets
Hướng dẫn Java Design Pattern – Composite