@Override public ConsListPropertyMap putCopy(Property value) { return new ConsListPropertyMap(this, value); }
public Property get(Object key) { if (key == null || isEmpty()) { return null; } else if (key instanceof String) { return getStringKey((String) key); } else { return getEquals(key); } }
public ConsListPropertyMap getOwningMap(Property value) { ConsListPropertyMap current = this; while (!current.isEmpty()) { if (current.getLastProperty().equals(value)) { return current; } current = current.getParentMap(); } return null; }
@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 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); }
/** @since 0.17 or earlier */ public static PropertyMap empty() { if (ObjectStorageOptions.TriePropertyMap) { return TriePropertyMap.empty(); } else { return ConsListPropertyMap.empty(); } }
@Override public Iterator<Object> iterator() { return ConsListPropertyMap.this.orderedKeyIterator(); }
@Override public Iterator<Property> iterator() { return ConsListPropertyMap.this.orderedValueIterator(); }
@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; }
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); }
/** @since 0.17 or earlier */ public static PropertyMap empty() { if (ObjectStorageOptions.TriePropertyMap) { return TriePropertyMap.empty(); } else { return ConsListPropertyMap.empty(); } }
@Override public Iterator<Object> iterator() { return ConsListPropertyMap.this.orderedKeyIterator(); }
@Override public Iterator<Property> iterator() { return ConsListPropertyMap.this.orderedValueIterator(); }
@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; }
public ConsListPropertyMap getOwningMap(Property value) { ConsListPropertyMap current = this; while (!current.isEmpty()) { if (current.getLastProperty().equals(value)) { return current; } current = current.getParentMap(); } return null; }
public Property get(Object key) { if (key == null || isEmpty()) { return null; } else if (key instanceof String) { return getStringKey((String) key); } else { return getEquals(key); } }
@Override public ConsListPropertyMap putCopy(Property value) { return new ConsListPropertyMap(this, value); }
@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; }
private Property getEquals(Object key) { for (ConsListPropertyMap current = this; !current.isEmpty(); current = current.getParentMap()) { Property p = current.getLastProperty(); Object pKey = p.getKey(); if (pKey == key || pKey.equals(key)) { return p; } } return null; }
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; }