Advertisement
SKYIINET

MapValueSet

Oct 31st, 2014
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.92 KB | None | 0 0
  1. package Base;
  2.  
  3. import java.util.HashMap;
  4. import java.util.HashSet;
  5. import java.util.Map;
  6.  
  7. public class MapValueSet<K,T> {
  8.  
  9.     Indexer indxK = new Indexer();
  10.     Indexer indxT = new Indexer();
  11.    
  12.     Map<K,Integer> kTags = new HashMap<K,Integer>();
  13.     Map<T,Integer> tTags = new HashMap<T,Integer>();
  14.    
  15.     Map<Integer,HashSet<Integer>> MapK = new HashMap<Integer,HashSet<Integer>>();
  16.    
  17.     Map<Integer,HashSet<Integer>> MapT = new HashMap<Integer,HashSet<Integer>>();
  18.    
  19.     public void put(K k, T t){
  20.        
  21.         if(!kTags.containsKey(k)){
  22.             kTags.put(k, indxK.getNextTag());
  23.         }
  24.        
  25.         if(!MapK.containsKey(kTags.get(k))){
  26.             MapK.put(kTags.get(k), new HashSet<Integer>());
  27.         }
  28.        
  29.         if(!tTags.containsKey(t)){
  30.             tTags.put(t, indxT.getNextTag());
  31.         }
  32.        
  33.         if(!MapT.containsKey(tTags.get(t))){
  34.             MapT.put(tTags.get(t), new HashSet<Integer>());
  35.         }      
  36.             MapK.get(kTags.get(k)).add(tTags.get(t));
  37.             MapT.get(tTags.get(t)).add(kTags.get(k));      
  38.     }
  39.    
  40.     public boolean removeAtKey(K k, T t){
  41.         int kTag = -1;
  42.         int tTag = -1;
  43.        
  44.         if(kTags.get(k) != null){
  45.         kTag = kTags.get(k);
  46.         }
  47.        
  48.         if(tTags.get(t) != null){
  49.         tTag = tTags.get(t);
  50.         }
  51.        
  52.         if(kTag == -1 || tTag == -1){
  53.             System.out.println("Keys are Blank at: removeAtKey(k,t)");
  54.             return false;
  55.         }
  56.  
  57.         boolean removed = false;
  58.        
  59.             if(MapK.get(kTag) != null){
  60.                 removed = MapK.get(kTag).remove(tTag);
  61.             }
  62.             if(MapT.get(tTag) != null){
  63.                 MapT.get(tTag).remove(kTag);
  64.             }
  65.                    
  66.             if(!MapK.containsKey(kTag)){
  67.                 kTags.remove(k);
  68.                 indxK.removeTag(kTag);
  69.             }
  70.            
  71.             if(MapK.containsKey(kTag)){
  72.                 tTags.remove(t);
  73.                 indxT.removeTag(tTag); 
  74.                
  75.             }
  76.        
  77.         return removed;
  78.     }
  79.    
  80.     public void removeAtValue(T t){
  81.         if(!tTags.containsKey(t)){
  82.             return;
  83.         }
  84.         Object[] keyArr = MapT.get(tTags.get(t)).toArray();
  85.        
  86.         for(int i = 0; i < keyArr.length; i++){
  87.             MapK.get(keyArr[i]).remove(tTags.get(t));
  88.         }
  89.        
  90.             indxT.removeTag(tTags.get(t));
  91.             MapT.remove(tTags.get(t));
  92.             tTags.remove(t);
  93.     }
  94.    
  95.     public boolean mapContains(T t){
  96.         if(tTags.get(t) == null){
  97.             return false;
  98.         }
  99.         int tTag = tTags.get(t);
  100.        
  101.         return MapT.get(tTag) != null && !MapT.get(tTag).isEmpty();
  102.     }
  103.    
  104.     public boolean containsKey(K k){
  105.        
  106.         if(kTags.get(k) == null){
  107.             return false;
  108.         }
  109.        
  110.         return MapK.containsKey(kTags.get(k));
  111.     }
  112.    
  113.     public boolean keyContains(K k, T t){
  114.        
  115.         if(kTags.get(k) != null && tTags.get(t) != null){
  116.             return MapK.get(kTags.get(k)).contains(tTags.get(t));
  117.         }
  118.        
  119.         return false;
  120.        
  121.     }
  122.    
  123.     @Override
  124.     public String toString(){
  125.        
  126.         String s = "";
  127.        
  128.         s = s+ "Key      Map: " + MapK.toString() + "\n";
  129.         s = s+ "Value    Map: " + MapT.toString() + "\n";
  130.         s = s+ "KeyTag   Map: " + kTags.toString() + "\n";
  131.         s = s+ "ValueTag Map: " + tTags.toString() + "\n";
  132.         s = s+ "KeyTag   List: " + indxK.activeSet().toString() + "\n";
  133.         s = s+ "ValueTag List: " + indxT.activeSet().toString();
  134.        
  135.         return s;      
  136.     }
  137.    
  138.    
  139. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement