fork download
  1. import java.util.HashMap;
  2. import java.util.Map;
  3.  
  4.  
  5. class VariableStore {
  6.  
  7. private final Map<Class<?>, Map<String, Object>> containers = new HashMap<>();
  8.  
  9. public <T> T getVariable(Class<T> clazz, String key) {
  10. Map<String,?> map = containers.get(clazz);
  11. if (map == null) {
  12. return null;
  13. }
  14. Object val = map.get(key);
  15. if (val == null) {
  16. return null;
  17. }
  18. return clazz.cast(val);
  19. }
  20.  
  21. public void putVariable(String key, Object value) {
  22. if (value == null || key == null) {
  23. throw new IllegalArgumentException("Neither Key nor Value can be null: " + key + " -> " + value);
  24. }
  25. Class<?> clazz = value.getClass();
  26. Map<String, Object> map = containers.get(clazz);
  27. if (map == null) {
  28. map = new HashMap<>();
  29. containers.put(clazz, map);
  30. }
  31. map.put(key, value);
  32. }
  33.  
  34. public static void main(String[] args) {
  35. VariableStore vs = new VariableStore();
  36. for (int i = 0; i < 10; i++) {
  37. vs.putVariable("" + i, new Integer(i));
  38. vs.putVariable("" + i, "" + i);
  39. }
  40.  
  41. for (int i = 0; i < 10; i++) {
  42. Integer iv = vs.getVariable(Integer.class, "" + i);
  43. String sv = vs.getVariable(String.class, "" + i);
  44. System.out.printf("Got %s (%s)\n", iv, iv.getClass());
  45. System.out.printf("Got %s (%s)\n", sv, sv.getClass());
  46. }
  47.  
  48.  
  49. }
  50.  
  51. }
  52.  
Success #stdin #stdout 0.11s 320320KB
stdin
Standard input is empty
stdout
Got 0 (class java.lang.Integer)
Got 0 (class java.lang.String)
Got 1 (class java.lang.Integer)
Got 1 (class java.lang.String)
Got 2 (class java.lang.Integer)
Got 2 (class java.lang.String)
Got 3 (class java.lang.Integer)
Got 3 (class java.lang.String)
Got 4 (class java.lang.Integer)
Got 4 (class java.lang.String)
Got 5 (class java.lang.Integer)
Got 5 (class java.lang.String)
Got 6 (class java.lang.Integer)
Got 6 (class java.lang.String)
Got 7 (class java.lang.Integer)
Got 7 (class java.lang.String)
Got 8 (class java.lang.Integer)
Got 8 (class java.lang.String)
Got 9 (class java.lang.Integer)
Got 9 (class java.lang.String)