Class ByteArrayWrapper

java.lang.Object
com.ibm.icu.util.ByteArrayWrapper
All Implemented Interfaces:
Comparable<ByteArrayWrapper>
Direct Known Subclasses:
RawCollationKey

public class ByteArrayWrapper extends Object implements Comparable<ByteArrayWrapper>
A simple utility class to wrap a byte array.

Generally passed as an argument object into a method. The method takes responsibility of writing into the internal byte array and increasing its size when necessary.

Author:
syn wee
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    byte[]
    Internal byte array.
    int
    Size of the internal byte array used.
  • Constructor Summary

    Constructors
    Constructor
    Description
    Construct a new ByteArrayWrapper with no data.
    ByteArrayWrapper(byte[] bytesToAdopt, int size)
    Construct a new ByteArrayWrapper from a byte array and size
    Construct a new ByteArrayWrapper from the contents of a ByteBuffer.
  • Method Summary

    Modifier and Type
    Method
    Description
    append(byte[] src, int start, int limit)
    Appends the internal byte array from offset size with the contents of src from offset start to limit.
    int
    Compare this object to another ByteArrayWrapper, which must not be null.
    ensureCapacity(int capacity)
    Ensure that the internal byte array is at least of length capacity.
    boolean
    equals(Object other)
    Return true if the bytes in each wrapper are equal.
    int
    Return the hashcode.
    final byte[]
    Releases the internal byte array to the caller, resets the internal byte array to null and its size to 0.
    set(byte[] src, int start, int limit)
    Set the internal byte array from offset 0 to (limit - start) with the contents of src from offset start to limit.
    Returns string value for debugging

    Methods inherited from class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • Field Details

    • bytes

      public byte[] bytes
      Internal byte array.
    • size

      public int size
      Size of the internal byte array used. Different from bytes.length, size will be <= bytes.length. Semantics of size is similar to java.util.Vector.size().
  • Constructor Details

    • ByteArrayWrapper

      public ByteArrayWrapper()
      Construct a new ByteArrayWrapper with no data.
    • ByteArrayWrapper

      public ByteArrayWrapper(byte[] bytesToAdopt, int size)
      Construct a new ByteArrayWrapper from a byte array and size
      Parameters:
      bytesToAdopt - the byte array to adopt
      size - the length of valid data in the byte array
      Throws:
      IndexOutOfBoundsException - if bytesToAdopt == null and size != 0, or size < 0, or size > bytesToAdopt.length.
    • ByteArrayWrapper

      public ByteArrayWrapper(ByteBuffer source)
      Construct a new ByteArrayWrapper from the contents of a ByteBuffer.
      Parameters:
      source - the ByteBuffer from which to get the data.
  • Method Details

    • ensureCapacity

      public ByteArrayWrapper ensureCapacity(int capacity)
      Ensure that the internal byte array is at least of length capacity. If the byte array is null or its length is less than capacity, a new byte array of length capacity will be allocated. The contents of the array (between 0 and size) remain unchanged.
      Parameters:
      capacity - minimum length of internal byte array.
      Returns:
      this ByteArrayWrapper
    • set

      public final ByteArrayWrapper set(byte[] src, int start, int limit)
      Set the internal byte array from offset 0 to (limit - start) with the contents of src from offset start to limit. If the byte array is null or its length is less than capacity, a new byte array of length (limit - start) will be allocated. This resets the size of the internal byte array to (limit - start).
      Parameters:
      src - source byte array to copy from
      start - start offset of src to copy from
      limit - end + 1 offset of src to copy from
      Returns:
      this ByteArrayWrapper
    • append

      public final ByteArrayWrapper append(byte[] src, int start, int limit)
      Appends the internal byte array from offset size with the contents of src from offset start to limit. This increases the size of the internal byte array to (size + limit - start).
      Parameters:
      src - source byte array to copy from
      start - start offset of src to copy from
      limit - end + 1 offset of src to copy from
      Returns:
      this ByteArrayWrapper
    • releaseBytes

      public final byte[] releaseBytes()
      Releases the internal byte array to the caller, resets the internal byte array to null and its size to 0.
      Returns:
      internal byte array.
    • toString

      public String toString()
      Returns string value for debugging
      Overrides:
      toString in class Object
    • equals

      public boolean equals(Object other)
      Return true if the bytes in each wrapper are equal.
      Overrides:
      equals in class Object
      Parameters:
      other - the object to compare to.
      Returns:
      true if the two objects are equal.
    • hashCode

      public int hashCode()
      Return the hashcode.
      Overrides:
      hashCode in class Object
      Returns:
      the hashcode.
    • compareTo

      public int compareTo(ByteArrayWrapper other)
      Compare this object to another ByteArrayWrapper, which must not be null.
      Specified by:
      compareTo in interface Comparable<ByteArrayWrapper>
      Parameters:
      other - the object to compare to.
      Returns:
      a value <0, 0, or >0 as this compares less than, equal to, or greater than other.
      Throws:
      ClassCastException - if the other object is not a ByteArrayWrapper