Class MapCodec<K,V>

java.lang.Object
io.deephaven.util.codec.MapCodec<K,V>
All Implemented Interfaces:
ObjectCodec<Map<K,V>>, ObjectDecoder<Map<K,V>>
Direct Known Subclasses:
StringBooleanMapCodec, StringDoubleMapCodec, StringFloatMapCodec, StringIntMapCodec, StringLongMapCodec, StringStringMapCodec

public abstract class MapCodec<K,V> extends Object implements ObjectCodec<Map<K,V>>
ObjectCodec implementation for Maps of type K to V. Each map is encoded as an integer length, followed by encoded pairs of key values. A null map is represented as an array of zero bytes.
  • Method Details

    • isNullable

      public boolean isNullable()
      Description copied from interface: ObjectCodec
      Does this codec support encoding of null values?
      Specified by:
      isNullable in interface ObjectCodec<K>
      Returns:
      if null values are supported
    • getPrecision

      public int getPrecision()
      Description copied from interface: ObjectCodec
      If applicable, the maximum encodable precision. If precision is not applicable (i.e. for non-numeric types) this method should return zero.
      Specified by:
      getPrecision in interface ObjectCodec<K>
      Returns:
      the numeric precision supported by this codec
    • getScale

      public int getScale()
      Description copied from interface: ObjectCodec
      If applicable, the maximum encodable scale. If scale is not applicable (i.e. for non-numeric types) this method should return zero.
      Specified by:
      getScale in interface ObjectCodec<K>
      Returns:
      the numeric scale (digits after the decimal point) supported by this codec
    • encode

      public byte @NotNull [] encode(@Nullable @Nullable Map<K,V> input)
      Description copied from interface: ObjectCodec
      Encode the specified input as an array of bytes. Note that it is up to the implementation how to encode null inputs. The use of a zero-length byte array is strongly encouraged.
      Specified by:
      encode in interface ObjectCodec<K>
      Parameters:
      input - The input object, possibly null
      Returns:
      The output byte array
    • decode

      @Nullable public @Nullable Map<K,V> decode(@NotNull @NotNull ByteBuffer byteBuffer)
      Description copied from interface: ObjectDecoder
      Decode an object from a ByteBuffer. The position of the input buffer may or may not be modified by this method.
      Specified by:
      decode in interface ObjectDecoder<K>
      Parameters:
      byteBuffer - The input ByteBuffer containing bytes to decode
      Returns:
      The output object, possibly null
    • decode

      @Nullable public @Nullable Map<K,V> decode(byte @NotNull [] input, int offset, int length)
      Description copied from interface: ObjectDecoder
      Decode an object from an array of bytes.
      Specified by:
      decode in interface ObjectDecoder<K>
      Parameters:
      input - The input byte array containing bytes to decode
      offset - The offset into the byte array to start decoding from
      length - The number of bytes to decode, starting at the offset
      Returns:
      The output object, possibly null
    • expectedObjectWidth

      public int expectedObjectWidth()
      Description copied from interface: ObjectDecoder
      What width byte array does this ObjectCodec expect to encode and decode?
      Specified by:
      expectedObjectWidth in interface ObjectDecoder<K>
      Returns:
      VARIABLE_WIDTH_SENTINEL if the codec must encode and decode variable width columns, otherwise the fixed size of byte array that must be decoded and encoded.