Package org.apache.sysds.runtime.compress.colgroup.indexes

# Class CombinedIndex

java.lang.Object
org.apache.sysds.runtime.compress.colgroup.indexes.AColIndex
org.apache.sysds.runtime.compress.colgroup.indexes.CombinedIndex

All Implemented Interfaces:
  `IColIndex`

public class CombinedIndex extends AColIndex

## Nested Class Summary

## Nested classes/interfaces inherited from interface org.apache.sysds.runtime.compress.colgroup.indexes.IColIndex

`IColIndex.ColIndexType, IColIndex.SliceResult`

## Constructor Summary

Constructors
Constructor
Description
`CombinedIndex(IColIndex l, IColIndex r)`

## Method Summary

Modifier and Type
Method
Description
`double`
`avgOfIndex()`
Get the average of this index.
`IColIndex`
`combine(IColIndex other)`
combine the indexes of this colIndex with another, it is expected that all calls to this contains unique indexes, and no copies of values.
`boolean`
`contains(int i)`
Analyze if this column group contain the given column id
`boolean`
`equals(IColIndex other)`
`long`
`estimateInMemorySize()`
Get the in memory size of this object.
`int`
`findIndex(int i)`
Find the index of the value given return negative if non existing.
`int`
`get(int i)`
Get the index at a specific location, Note that many of the underlying implementations does not throw exceptions on indexes that are completely wrong, so all implementations that use this index should always be well behaved.
`long`
`getExactSizeOnDisk()`
Get the exact size on disk to enable preallocation of the disk output buffer sizes
`int[]`
`getReorderingIndex()`
If the columns are not in sorted incrementing order this method can be called to get the sorting index for this set of column indexes.
`boolean`
`isContiguous()`
Get if these columns are contiguous, meaning all indexes are integers at increments of 1.
`boolean`
`isSorted()`
Get if the Index is sorted.
`IIterate`
`iterator()`
A Iterator of the indexes see the iterator interface for details.
`static CombinedIndex`
`read(DataInput in)`
`IColIndex`
`shift(int i)`
Return a new column index where the values are shifted by the specified amount.
`int`
`size()`
Get the size of the index aka, how many columns is contained
`IColIndex.SliceResult`
`slice(int l, int u)`
Slice the range given.
`IColIndex`
`sort()`
Sort the index and return a new object if there are modifications otherwise return this.
`String`
`toString()`
`void`
`write(DataOutput out)`
Write out the IO representation of this column index

### Methods inherited from class org.apache.sysds.runtime.compress.colgroup.indexes.AColIndex

`contains, containsAny, containsStrict, decompressToDenseFromSparse, decompressVec, equals, hashCode`

### Methods inherited from class java.lang.Object

`getClass, notify, notifyAll, wait, wait, wait`

## Constructor Details

### CombinedIndex

public CombinedIndex(IColIndex l, IColIndex r)

## Method Details

### size

public int size()
Description copied from interface: `IColIndex`
Get the size of the index aka, how many columns is contained

Returns:
  The size of the array

### get

public int get(int i)
Description copied from interface: `IColIndex`
Get the index at a specific location, Note that many of the underlying implementations does not throw exceptions on indexes that are completely wrong, so all implementations that use this index should always be well behaved.

Parameters:
  `i` - The index to get
Returns:
  the column index at the index.

### shift

public IColIndex shift(int i)
Description copied from interface: `IColIndex`
Return a new column index where the values are shifted by the specified amount. It is returning a new instance of the index.

Parameters:
  `i` - The amount to shift
Returns:
  the new instance of an index.

### write

public void write(DataOutput out) throws IOException
Description copied from interface: `IColIndex`
Write out the IO representation of this column index

Parameters:
  `out` - The Output to write into
Throws:
  `IOException` - IO exceptions in case of for instance not enough disk space

### getExactSizeOnDisk

public long getExactSizeOnDisk()
Description copied from interface: `IColIndex`
Get the exact size on disk to enable preallocation of the disk output buffer sizes

Returns:
  The exact disk representation size

### estimateInMemorySize

public long estimateInMemorySize()
Description copied from interface: `IColIndex`
Get the in memory size of this object.

Returns:
  The memory size of this object

### iterator

public IIterate iterator()
Description copied from interface: `IColIndex`
A Iterator of the indexes see the iterator interface for details.

Returns:
  A iterator for the indexes contained.

### findIndex

public int findIndex(int i)
Description copied from interface: `IColIndex`
Find the index of the value given return negative if non existing.

Parameters:
  `i` - the value to find inside the allocation
Returns:
  The index of the value.

### slice

public IColIndex.SliceResult slice(int l, int u)
Description copied from interface: `IColIndex`
Slice the range given. The slice result is an object containing the indexes in the original array to slice out and a new index for the sliced columns offset by l. Example: ArrayIndex(1,3,5).slice(2,6) returns SliceResult(1,3,ArrayIndex(1,3))

Parameters:
  `l` - inclusive lower bound
  `u` - exclusive upper bound
Returns:
  A slice result

### equals

public boolean equals(IColIndex other)

### combine

public IColIndex combine(IColIndex other)
Description copied from interface: `IColIndex`
combine the indexes of this colIndex with another, it is expected that all calls to this contains unique indexes, and no copies of values.

Parameters:
  `other` - The other array
Returns:
  The combined array

### isContiguous

public boolean isContiguous()
Description copied from interface: `IColIndex`
Get if these columns are contiguous, meaning all indexes are integers at increments of 1. ex: 1,2,3,4,5,6 is contiguous 1,3,4 is not.

Returns:
  If the Columns are contiguous.

### getReorderingIndex

public int[] getReorderingIndex()
Description copied from interface: `IColIndex`
If the columns are not in sorted incrementing order this method can be called to get the sorting index for this set of column indexes. The returned list should be the mapping of elements for each column to where it should be after sorting.

Returns:
  A Reordered index.

### isSorted

public boolean isSorted()
Description copied from interface: `IColIndex`
Get if the Index is sorted.

Returns:
  If the index is sorted

### sort

public IColIndex sort()
Description copied from interface: `IColIndex`
Sort the index and return a new object if there are modifications otherwise return this.

Returns:
  The sorted instance of this column index.

### contains

public boolean contains(int i)
Description copied from interface: `IColIndex`
Analyze if this column group contain the given column id

Parameters:
  `i` - id to search for
Returns:
  if it is contained

### avgOfIndex

public double avgOfIndex()
Description copied from interface: `IColIndex`
Get the average of this index. We use this to sort the priority que when combining equivalent costly groups

Returns:
  The average of the indexes.

### read

public static CombinedIndex read(DataInput in) throws IOException

Throws:
  `IOException`

### toString

public String toString()

Overrides:
  `toString` in class `Object`