public PropertyMap copyAndPut(Object key, Property value) { if (!value.getKey().equals(key)) { throw new IllegalArgumentException("Key must equal extracted key of property."); } Property oldValue = get(key); if (oldValue != null) { return replaceCopy(oldValue, value); } return putCopy(value); }
public PropertyMap copyAndPut(Object key, Property value) { if (!value.getKey().equals(key)) { throw new IllegalArgumentException("Key must equal extracted key of property."); } Property oldValue = get(key); if (oldValue != null) { return replaceCopy(oldValue, value); } return putCopy(value); }
@Override public ConsListPropertyMap replaceCopy(Property oldValue, Property newValue) { Deque<Property> shelve = new ArrayDeque<>(); ConsListPropertyMap current = this; while (!current.isEmpty()) { if (current.getLastProperty().equals(oldValue)) { ConsListPropertyMap newMap = current.getParentMap(); newMap = newMap.putCopy(newValue); for (Property property : shelve) { newMap = newMap.putCopy(property); } return newMap; } else { shelve.push(current.getLastProperty()); current = current.getParentMap(); } } return this; }
@Override public ConsListPropertyMap replaceCopy(Property oldValue, Property newValue) { Deque<Property> shelve = new ArrayDeque<>(); ConsListPropertyMap current = this; while (!current.isEmpty()) { if (current.getLastProperty().equals(oldValue)) { ConsListPropertyMap newMap = current.getParentMap(); newMap = newMap.putCopy(newValue); for (Property property : shelve) { newMap = newMap.putCopy(property); } return newMap; } else { shelve.push(current.getLastProperty()); current = current.getParentMap(); } } return this; }
@Override public ConsListPropertyMap removeCopy(Property value) { Deque<Property> shelve = new ArrayDeque<>(); ConsListPropertyMap current = this; while (!current.isEmpty()) { if (current.getLastProperty().equals(value)) { ConsListPropertyMap newMap = current.getParentMap(); for (Property property : shelve) { newMap = newMap.putCopy(property); } return newMap; } else { shelve.push(current.getLastProperty()); current = current.getParentMap(); } } return this; }
public ImmutableMap<Object, Property> copyAndRemove(Object key) { Deque<Property> shelve = new ArrayDeque<>(); ConsListPropertyMap current = this; while (!current.isEmpty()) { if (current.getLastProperty().getKey().equals(key)) { ConsListPropertyMap newMap = current.getParentMap(); for (Property property : shelve) { newMap = newMap.putCopy(property); } return newMap; } else { shelve.push(current.getLastProperty()); current = current.getParentMap(); } } return this; }
@Override public ConsListPropertyMap removeCopy(Property value) { Deque<Property> shelve = new ArrayDeque<>(); ConsListPropertyMap current = this; while (!current.isEmpty()) { if (current.getLastProperty().equals(value)) { ConsListPropertyMap newMap = current.getParentMap(); for (Property property : shelve) { newMap = newMap.putCopy(property); } return newMap; } else { shelve.push(current.getLastProperty()); current = current.getParentMap(); } } return this; }
public ImmutableMap<Object, Property> copyAndRemove(Object key) { Deque<Property> shelve = new ArrayDeque<>(); ConsListPropertyMap current = this; while (!current.isEmpty()) { if (current.getLastProperty().getKey().equals(key)) { ConsListPropertyMap newMap = current.getParentMap(); for (Property property : shelve) { newMap = newMap.putCopy(property); } return newMap; } else { shelve.push(current.getLastProperty()); current = current.getParentMap(); } } return this; }