/** * Obtain the value for a specific key. * * @return the value for a key, or null if not found * @param key the key **/ public V get(Object key) { int index = getIndexOfKey(key); return (index != -1) ? value(index) : null; }
@Override public boolean equals(Object o) { if (! (o instanceof Hashlet) ) return false; Hashlet<?, ?> rhs = (Hashlet<?, ?>) o; if (used != rhs.used) return false; for (int i = 0; i < used; i++) { int bi = rhs.getIndexOfKey(key(i)); if (bi == -1) return false; Object a = value(i); Object b = rhs.value(bi); boolean equal = (a == null) ? b == null : a.equals(b); if ( !equal ) return false; } return true; } }
public FieldValue setValue(FieldValue value) { if (value == null) { throw new NullPointerException("Null values in Struct not supported, use removeFieldValue() to remove value instead."); } int index = values.getIndexOfKey(id); FieldValue retVal = null; if (index == -1) { values.put(id, value); invalidateOrder(); } else { retVal = values.value(index); values.setValue(index, value); } return retVal; }
@Override protected void doSetFieldValue(Field field, FieldValue value) { if (field == null) { throw new IllegalArgumentException("Invalid null field pointer"); } Field myField = getDataType().getField(field.getId()); if (myField==null) { throw new IllegalArgumentException("No such field in "+getDataType()+" : "+field.getName()); } if (!myField .getDataType().isValueCompatible(value)) { throw new IllegalArgumentException( "Incompatible data types. Got " + value.getDataType() + ", expected " + myField.getDataType()); } if (myField.getId() != field.getId()) { throw new IllegalArgumentException( "Inconsistent field: " + field); } int index = values.getIndexOfKey(field.getId()); if (index == -1) { values.put(field.getId(), value); invalidateOrder(); } else { values.setValue(index, value); } }