Class StringArray

java.lang.Object
org.apache.sysds.runtime.frame.data.columns.Array<String>
org.apache.sysds.runtime.frame.data.columns.StringArray
All Implemented Interfaces:
org.apache.hadoop.io.Writable

public class StringArray extends Array<String>
  • Constructor Details

    • StringArray

      public StringArray(String[] data)
  • Method Details

    • get

      public String[] get()
      Description copied from class: Array
      Get the underlying array out of the column Group, it is the responsibility of the caller to know what type it is. Also it is not guaranteed that the underlying data structure does not allocate an appropriate response to the caller. This in practice means that if called there is a possibility that the entire array is allocated again. So the method should only be used for debugging purposes not for performance.
      Specified by:
      get in class Array<String>
      Returns:
      The underlying array.
    • get

      public String get(int index)
      Description copied from class: Array
      Get the value at a given index. This method returns objects that have a high overhead in allocation. Therefore it is not as efficient as using the vectorized operations specified in the object.
      Specified by:
      get in class Array<String>
      Parameters:
      index - The index to query
      Returns:
      The value returned as an object
    • set

      public void set(int index, String value)
      Description copied from class: Array
      Set index to the given value of same type
      Specified by:
      set in class Array<String>
      Parameters:
      index - The index to set
      value - The value to assign
    • set

      public void set(int index, double value)
      Description copied from class: Array
      Set index to given double value (cast to the correct type of this array)
      Specified by:
      set in class Array<String>
      Parameters:
      index - the index to set
      value - the value to set it to (before casting to correct value type)
    • setFromOtherType

      public void setFromOtherType(int rl, int ru, Array<?> value)
      Description copied from class: Array
      Set range to given arrays value
      Specified by:
      setFromOtherType in class Array<String>
      Parameters:
      rl - row lower
      ru - row upper (inclusive)
      value - value array to take values from (other type)
    • set

      public void set(int rl, int ru, Array<String> value, int rlSrc)
      Description copied from class: Array
      Set range to given arrays value with an offset into other array
      Overrides:
      set in class Array<String>
      Parameters:
      rl - row lower
      ru - row upper (inclusive)
      value - value array to take values from
      rlSrc - the offset into the value array to take values from
    • setNz

      public void setNz(int rl, int ru, Array<String> value)
      Description copied from class: Array
      Set non default values in the range from the value array given
      Specified by:
      setNz in class Array<String>
      Parameters:
      rl - row start
      ru - row upper inclusive
      value - value array of same type
    • setFromOtherTypeNz

      public void setFromOtherTypeNz(int rl, int ru, Array<?> value)
      Description copied from class: Array
      Set non default values in the range from the value array given
      Specified by:
      setFromOtherTypeNz in class Array<String>
      Parameters:
      rl - row start
      ru - row end inclusive
      value - value array of different type
    • append

      public void append(String value)
      Description copied from class: Array
      Append a string value to the current Array, this should in general be avoided, and appending larger blocks at a time should be preferred.
      Specified by:
      append in class Array<String>
      Parameters:
      value - The value to append
    • append

      public Array<String> append(Array<String> other)
      Description copied from class: Array
      Append other array, if the other array is fitting in current allocated size use that allocated size, otherwise allocate new array to combine the other with this. This method should use the set range function, and should be preferred over the append single values.
      Specified by:
      append in class Array<String>
      Parameters:
      other - The other array of same type to append to this.
      Returns:
      The combined arrays.
    • write

      public void write(DataOutput out) throws IOException
      Throws:
      IOException
    • readFields

      public void readFields(DataInput in) throws IOException
      Throws:
      IOException
    • clone

      public Array<String> clone()
      Description copied from class: Array
      Overwrite of the java internal clone function for arrays, return a clone of underlying data that is mutable, (not immutable data.) Immutable data is dependent on the individual allocated arrays
      Specified by:
      clone in class Array<String>
      Returns:
      A clone
    • slice

      public Array<String> slice(int rl, int ru)
      Description copied from class: Array
      Slice out the sub range and return new array with the specified type. If the conversion fails fallback to normal slice.
      Specified by:
      slice in class Array<String>
      Parameters:
      rl - row start
      ru - row end (not included)
      Returns:
      A new array of sub range.
    • reset

      public void reset(int size)
      Description copied from class: Array
      Reset the Array and set to a different size. This method is used to reuse an already allocated Array, without extra allocation. It should only be done in cases where the Array is no longer in use in any FrameBlocks.
      Specified by:
      reset in class Array<String>
      Parameters:
      size - The size to reallocate into.
    • getAsByteArray

      public byte[] getAsByteArray()
      Description copied from class: Array
      Return the current allocated Array as a byte[], this is used to serialize the allocated Arrays out to the PythonAPI.
      Specified by:
      getAsByteArray in class Array<String>
      Returns:
      The array as bytes
    • getIndexAsBytes

      public byte[] getIndexAsBytes(int r)
      Python interface to extract strings from systemds.
      Parameters:
      r - the index to extract
      Returns:
      The value in bytes for py4j
    • getValueType

      public Types.ValueType getValueType()
      Description copied from class: Array
      Get the current value type of this array.
      Specified by:
      getValueType in class Array<String>
      Returns:
      The current value type.
    • analyzeValueType

      public Pair<Types.ValueType,Boolean> analyzeValueType(int maxCells)
      Description copied from class: Array
      Analyze the column to figure out if the value type can be refined to a better type. The return is in two parts, first the type it can be, second if it contains nulls.
      Specified by:
      analyzeValueType in class Array<String>
      Parameters:
      maxCells - maximum number of cells to analyze
      Returns:
      A better or equivalent value type to represent the column, including null information.
    • getFrameArrayType

      public ArrayFactory.FrameArrayType getFrameArrayType()
      Description copied from class: Array
      Get the internal FrameArrayType, to specify the encoding of the Types, note there are more Frame Array Types than there is ValueTypes.
      Specified by:
      getFrameArrayType in class Array<String>
      Returns:
      The FrameArrayType
    • getNulls

      public BitSetArray getNulls()
      Overrides:
      getNulls in class Array<String>
    • getInMemorySize

      public long getInMemorySize()
      Description copied from class: Array
      Get in memory size, not counting reference to this object.
      Overrides:
      getInMemorySize in class Array<String>
      Returns:
      the size in memory of this object.
    • getExactSerializedSize

      public long getExactSerializedSize()
      Description copied from class: Array
      Get the exact serialized size on disk of this array.
      Specified by:
      getExactSerializedSize in class Array<String>
      Returns:
      The exact size on disk
    • changeTypeCharacter

      public Array<Character> changeTypeCharacter(Array<Character> retA, int l, int u)
    • changeTypeString

      public Array<String> changeTypeString(Array<String> retA, int l, int u)
    • getMinMaxLength

      public Pair<Integer,Integer> getMinMaxLength()
      Description copied from class: Array
      Get the minimum and maximum length of the contained values as string type.
      Overrides:
      getMinMaxLength in class Array<String>
      Returns:
      A Pair of first the minimum length, second the maximum length
    • fill

      public void fill(String value)
      Description copied from class: Array
      fill the entire array with specific value.
      Specified by:
      fill in class Array<String>
      Parameters:
      value - the value to fill with.
    • getAsDouble

      public double getAsDouble(int i)
      Description copied from class: Array
      Get the index's value. returns 0 in case of Null.
      Specified by:
      getAsDouble in class Array<String>
      Parameters:
      i - index to get value from
      Returns:
      the value
    • getAsNaNDouble

      public double getAsNaNDouble(int i)
      Description copied from class: Array
      Get the index's value. returns Double.NaN in case of Null.
      Overrides:
      getAsNaNDouble in class Array<String>
      Parameters:
      i - index to get value from
      Returns:
      the value
    • isShallowSerialize

      public boolean isShallowSerialize()
      Description copied from class: Array
      analyze if this array can be shallow serialized. to allow caching without modification.
      Specified by:
      isShallowSerialize in class Array<String>
      Returns:
      boolean saying true if shallow serialization is available
    • isEmpty

      public boolean isEmpty()
      Description copied from class: Array
      Get if this array is empty, aka filled with empty values.
      Specified by:
      isEmpty in class Array<String>
      Returns:
      boolean saying true if empty
    • containsNull

      public boolean containsNull()
      Description copied from class: Array
      analyze if the array contains null values.
      Overrides:
      containsNull in class Array<String>
      Returns:
      If the array contains null.
    • select

      public Array<String> select(int[] indices)
      Description copied from class: Array
      Slice out the specified indices and return the sub array.
      Specified by:
      select in class Array<String>
      Parameters:
      indices - The indices to slice out
      Returns:
      the sliced out indices in an array format
    • select

      public Array<String> select(boolean[] select, int nTrue)
      Description copied from class: Array
      Slice out the true indices in the select input and return the sub array.
      Specified by:
      select in class Array<String>
      Parameters:
      select - a boolean vector specifying what to select
      nTrue - number of true values inside select
      Returns:
      the sliced out indices in an array format
    • isNotEmpty

      public final boolean isNotEmpty(int i)
      Specified by:
      isNotEmpty in class Array<String>
    • hashDouble

      public double hashDouble(int idx)
      Description copied from class: Array
      Hash the given index of the array. It is allowed to return NaN on null elements.
      Specified by:
      hashDouble in class Array<String>
      Parameters:
      idx - The index to hash
      Returns:
      The hash value of that index.
    • equals

      public boolean equals(Array<String> other)
      Description copied from class: Array
      Equals operation on arrays.
      Specified by:
      equals in class Array<String>
      Parameters:
      other - The other array to compare to.
      Returns:
      True if the arrays are equivalent.
    • possiblyContainsNaN

      public boolean possiblyContainsNaN()
      Specified by:
      possiblyContainsNaN in class Array<String>
    • toString

      public String toString()
      Overrides:
      toString in class Array<String>