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 N Number of Passwords of Length M Each
A Guide to System.exit()
Java Program to Implement Queue using Linked List
Cachable Static Assets with Spring MVC
Sort a HashMap in Java
Quick Guide to @RestClientTest in Spring Boot
Custom HTTP Header with the HttpClient
Jackson – Change Name of Field
Spring Data – CrudRepository save() Method
How to use the Spring FactoryBean?
Java Program to Implement CopyOnWriteArrayList API
OAuth2 for a Spring REST API – Handle the Refresh Token in Angular
Functional Interface trong Java 8
Spring Boot - Actuator
Hashing a Password in Java
Jackson – Bidirectional Relationships
Spring Boot Configuration with Jasypt
Java Program to Implement Traveling Salesman Problem using Nearest neighbour Algorithm
Overview of Spring Boot Dev Tools
Disable Spring Data Auto Configuration
Converting String to Stream of chars
More Jackson Annotations
Exploring the New Spring Cloud Gateway
Composition, Aggregation, and Association in Java
Create Java Applet to Simulate Any Sorting Technique
Chuyển đổi Array sang ArrayList và ngược lại
Extract network card address
Java Program to Implement Bit Array
Java Program to Perform Arithmetic Operations on Numbers of Size
Java Program to Check Whether it is Weakly Connected or Strongly Connected for a Directed Graph
Java Program to Implement Circular Singly Linked List
Chuyển đổi giữa các kiểu dữ liệu trong Java