Package org.apache.sysds.utils

## Class Hash

- java.lang.Object
- - org.apache.sysds.utils.Hash

    public class Hash
    extends Object

A class containing different hashing functions.

### Nested Class Summary

Nested Classes
`static class` `Hash.HashType` Available Hashing techniques

### Constructor Summary

Constructors
`Hash()`

### Method Summary

All Methods Static Methods Concrete Methods
`static byte` `expHash​(int x)` Compute exponentially distributed hash values in range 0..a.length eg: 50% == 0 , 25% == 1 12.5 % == 2 etc.
`static int` `hash​(double o, Hash.HashType ht)` Hash functions for double values.
`static int` `hash​(Object o, Hash.HashType ht)` Generic hashing of java objects, not ideal for specific values so use the specific methods for specific types.
`static int` `linearHash​(int v)` Compute the Linear hash of an int input value.
`static int` `linearHash​(int v, int bits)` Compute the Linear hash of an int input value, but only use the first bits of the linear hash.

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

`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### Hash

    public Hash()

### Method Detail

#### hash

    public static int hash​(Object o,
                           Hash.HashType ht)

Generic hashing of java objects, not ideal for specific values so use the specific methods for specific types. To Use the locality sensitive techniques override the objects hashcode function.

Parameters:
  `o` - The Object to hash.
  `ht` - The HashType to use.
Returns:
  An int Hash value.

#### hash

    public static int hash​(double o,
                           Hash.HashType ht)

Hash functions for double values.

Parameters:
  `o` - The double value.
  `ht` - The hashing function to apply.
Returns:
  An int Hash value.

#### linearHash

    public static int linearHash​(int v)

Compute the Linear hash of an int input value.

Parameters:
  `v` - The value to hash.
Returns:
  The int hash.

#### linearHash

    public static int linearHash​(int v,
                                 int bits)

Compute the Linear hash of an int input value, but only use the first bits of the linear hash.

Parameters:
  `v` - The value to hash.
  `bits` - The number of bits to use. up to maximum of 32.
Returns:
  The hashed value

#### expHash

    public static byte expHash​(int x)

Compute exponentially distributed hash values in range 0..a.length eg: 50% == 0 , 25% == 1 12.5 % == 2 etc. Useful because you can estimate size of a collection by only maintaining the highest value found. from this hash.

Parameters:
  `x` - value to hash
Returns:
  a hash value byte (only in the range of 0 to a.length)