@Override public void clear() { simpleMap.clear(); }
@Override public boolean containsKey(Object key) { return containsKey((String)key); }
@Override public boolean containsValue(Object value) { return simpleMap.containsValue(value); }
public void shouldStoreAndRetrieveStuff() { SimpleStringKeyMap<String> map = new SimpleStringKeyMap<>(); map.put("1", "one"); map.put("2", "two"); map.put("3", "three"); map.put("4", "four"); map.remove("1"); map.remove("3"); assertThat(map.get("3")).isNull(); assertThat(map.get("4")).isEqualTo("four"); assertThat(map.entrySet().iterator().next().getKey()).isEqualTo("2"); } }
@Override public void putAll(java.util.Map<? extends String, ? extends V> m) { if(immutable) { throw new IllegalStateException("object is immutable"); } for (Entry<? extends String, ? extends V> e : m.entrySet()) { put(e.getKey(), e.getValue()); } };
@Override public JsonElement remove(Object key) { if (key != null && key instanceof String) { return simpleMap.remove(key.toString()); } else { throw new IllegalArgumentException(); } }
@Override public JsonElement get(Object key) { if (key != null && key instanceof String) { return simpleMap.get(key.toString()); } else { throw new IllegalArgumentException(); } }
@Override public Set<Entry<String, JsonElement>> entrySet() { final Set<Entry<String, JsonElement>> entrySet = simpleMap.entrySet(); return new Set<Map.Entry<String, JsonElement>>() {
public V getWithKey(String key) { int index = getIndex(key); if(index>=0) { return values.get(index); } else { return null; } }
@Override public V get(Object key) { return getWithKey((String)key); }
@Override public JsonElement put(String key, JsonElement value) { Validate.notNull(key); if (value == null) { value = nullValue(); } return simpleMap.put(key, value); }
@Override public V remove(Object key) { if(immutable) { throw new IllegalStateException("object is immutable"); } int index = getIndex((String)key); if(index >=0) { System.arraycopy(keysArr,index+1,keysArr,index,keysArr.length-1-index); return values.remove(index); } else { return null; } }
@Override public V put(String key, V value) { if(immutable) { throw new IllegalStateException("object is immutable"); } Validate.notNull(key); int index = getIndex(key); if(index >=0) { values.set(index, value); } else { if(values.size()+1<keysArr.length) { // dynamically grow array keysArr = Arrays.copyOf(keysArr, keysArr.length + 3); } keysArr[values.size()] = key; values.add(value); } return value; }