@Override public synchronized V putIfAbsent(K key, V value) { ArrayHolder<K, V> current = this.holder; int index = current.find(key); if (index < 0) { COWEntry<K, V> newEntry = new COWEntry<>(key, value); this.holder = current.insert(-(index + 1), newEntry); return value; } return current.entries[index].getValue(); }
@Override public synchronized V replace(K key, V value) { ArrayHolder<K, V> current = this.holder; int index = current.find(key); if (index >= 0) { COWEntry<K, V> newEntry = new COWEntry<>(key, value); this.holder = current.replace(index, newEntry); return current.entries[index].getValue(); } return null; }
@Override public int encode(PositionedByteRange dst, Pojo2 val) { int written = byteField1.encode(dst, val.byteField1Asc); written += byteField2.encode(dst, val.byteField2Dsc); written += stringField.encode(dst, val.stringFieldDsc); written += byteField3.encode(dst, val.byteField3Dsc); return written; } }
@Override public boolean isNullable() { return super.isNullable() && typeC.isNullable(); }
@Override public boolean isNullable() { return super.isNullable() && typeD.isNullable(); }
@Override public boolean isOrderPreserving() { return super.isOrderPreserving() && typeD.isOrderPreserving(); }
@Override public boolean isSkippable() { return super.isSkippable() && typeD.isSkippable(); }
@Override public int encodedLength(Pojo2 val) { return byteField1.encodedLength(val.byteField1Asc) + byteField2.encodedLength(val.byteField2Dsc) + stringField.encodedLength(val.stringFieldDsc) + byteField3.encodedLength(val.byteField3Dsc); }
@Override public int encodedLength(Pojo1 val) { return stringField.encodedLength(val.stringFieldAsc) + intField.encodedLength(val.intFieldAsc) + doubleField.encodedLength(val.doubleFieldAsc); }
/** * Create a {@code RawBytesTerminated} using the specified terminator and * {@code order}. * @throws IllegalArgumentException if {@code term} is {@code null} or empty. */ public RawBytesTerminated(Order order, String term) { super(new RawBytes(order), term); }