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:
Guide to java.util.Formatter
Java Program to Construct an Expression Tree for an Prefix Expression
Java Program to Check if it is a Sparse Matrix
Java Program to Represent Graph Using Incidence Matrix
Mockito and JUnit 5 – Using ExtendWith
Arrays.asList vs new ArrayList(Arrays.asList())
Cachable Static Assets with Spring MVC
Spring Boot - Code Structure
Guide to Apache Commons CircularFifoQueue
How to Find an Element in a List with Java
Base64 encoding và decoding trong Java 8
Introduction to Java Serialization
Convert Character Array to String in Java
Java Program to Implement Dijkstra’s Algorithm using Priority Queue
Giới thiệu JDBC Connection Pool
Java InputStream to String
Debug a HttpURLConnection problem
Spring’s RequestBody and ResponseBody Annotations
Java Program to Implement Sorted List
Tránh lỗi NullPointerException trong Java như thế nào?
Java – Write a Reader to File
Java Program to Implement Merge Sort Algorithm on Linked List
Lập trình đa luồng với CompletableFuture trong Java 8
Hướng dẫn sử dụng lớp Console trong java
A Guide to @RepeatedTest in Junit 5
Introduction to Apache Commons Text
Java Program to Perform Left Rotation on a Binary Search Tree
Java Program to Find kth Smallest Element by the Method of Partitioning the Array
Spring WebClient Requests with Parameters
Display Auto-Configuration Report in Spring Boot
Java Program to Find the Edge Connectivity of a Graph
Java – Convert File to InputStream