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 Implement the String Search Algorithm for Short Text Sizes
Spring Boot - Web Socket
Quick Guide to Spring MVC with Velocity
Spring REST API + OAuth2 + Angular (using the Spring Security OAuth legacy stack)
Spring Boot - Tomcat Deployment
New Features in Java 13
How To Serialize and Deserialize Enums with Jackson
Spring Boot Integration Testing with Embedded MongoDB
Batch Processing with Spring Cloud Data Flow
New Features in Java 9
How to Iterate Over a Stream With Indices
Spring Boot Annotations
Hướng dẫn Java Design Pattern – State
Java Program to Implement Quick Hull Algorithm to Find Convex Hull
Control Structures in Java
Các chương trình minh họa sử dụng Cấu trúc điều khiển trong Java
Composition, Aggregation, and Association in Java
Spring Autowiring of Generic Types
Java Program to Find Inverse of a Matrix
So sánh HashSet, LinkedHashSet và TreeSet trong Java
Java Program to Find Shortest Path Between All Vertices Using Floyd-Warshall’s Algorithm
Configure a RestTemplate with RestTemplateBuilder
Java Program to Check whether Graph is a Bipartite using 2 Color Algorithm
Java Program to Implement Treap
A Guide to Java HashMap
Java Program to Implement CopyOnWriteArrayList API
Java Program to Implement Hash Tree
Java TreeMap vs HashMap
Java Program to Check whether Directed Graph is Connected using DFS
Java Program to Implement Unrolled Linked List
Java Program to Implement Direct Addressing Tables
Java Program to Implement Vector API