1 package gnu.kawa.util; 2 import java.util.Hashtable ; 3 4 7 8 public class RangeTable implements Cloneable { 10 Object [] index = new Object [128]; 11 Hashtable hash = new Hashtable (200); 12 13 public Object lookup(int key, Object defaultValue) 14 { 15 if ((key & 127) == key) 16 return index[key]; 17 return hash.get(new Integer (key)); 18 } 19 20 public void set(int lo, int hi, Object value) 21 { 22 if (lo > hi) 23 return; 24 for (int i = lo; ; i++) 25 { 26 if ((i & 127) == i) 27 index[i] = value; 28 else 29 hash.put(new Integer (i), value); 30 if (i == hi) 31 break; 32 } 33 } 34 35 public void set(int key, Object value) 36 { 37 set(key, key, value); 38 } 39 40 public void remove(int lo, int hi) 41 { 42 if (lo > hi) 43 return; 44 for (int i = lo; ; i++) 45 { 46 if ((i & 127) == i) 47 index[i] = null; 48 else 49 hash.remove(new Integer (i)); 50 if (i == hi) 51 break; 52 } 53 } 54 55 public void remove(int key) 56 { 57 remove(key, key); 58 } 59 60 public RangeTable copy() 61 { 62 RangeTable copy = new RangeTable(); 63 copy.index = (Object []) index.clone(); 64 copy.hash = (Hashtable ) hash.clone(); 65 return copy; 66 } 67 68 public Object clone() 69 { 70 return copy(); 71 } 72 73 180 181 182 257 } 258 259 281 | Popular Tags |