Advertisement
mikolaaaaa

Untitled

Nov 29th, 2024
26
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.67 KB | None | 0 0
  1. import java.util.*;
  2. import java.lang.*;
  3.  
  4. class Test
  5. {
  6.     public static void main(String args[])
  7.     {
  8.         // MapWithAllUnique<Integer,Integer> map = new MapWithAllUnique<>();
  9.         // map.put(1,1);
  10.         // map.put(1,1);
  11.         // map.put(1,2);
  12.         // map.put(2,1);
  13.         MapWithAllUnique<String,Integer> map = new MapWithAllUnique<>();
  14.         map.put("a",1);
  15.         map.put("b",2);
  16.         System.out.println(map.isAllUnique());
  17.         map.put("c",1);
  18.         System.out.println(map.isAllUnique());
  19.         map.put("a",3);
  20.         System.out.println(map.isAllUnique());
  21.     }
  22. }
  23.  
  24. class MapWithAllUnique<K, V> {
  25.     private final Map<K,V> values = new HashMap<>();
  26.     private final Map<V, Integer> valuesCount = new HashMap<>();
  27.     int counterNotUnique;
  28.      
  29.     public V put(K key, V value) {  
  30.         var oldValue = values.get(key);   //1
  31.         values.put(key, value);  
  32.         if (oldValue != null) {
  33.             valuesCount.remove(oldValue);
  34.         }
  35.         int newCount = valuesCount.getOrDefault(value,0) + 1;
  36.         if (newCount > 1) {
  37.             counterNotUnique++;
  38.         }
  39.         valuesCount.put(value, newCount);
  40.         return value;  
  41.     }
  42.  
  43.     public V get(K key) {      
  44.         return values.get(key);
  45.     }
  46.  
  47.     public V remove(K key) {  
  48.         V removed = values.remove(key);
  49.         int currenctCount = valuesCount.get(removed);
  50.         if (currenctCount == 2) {
  51.             counterNotUnique--;
  52.         }
  53.         valuesCount.put(values.get(key), valuesCount.get(removed) - 1);  
  54.         return removed;
  55.     }
  56.  
  57.     public boolean isAllUnique() {  
  58.         return counterNotUnique <= 0;
  59.     }
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement