edu.umd.cloud9.io.map
Class HMapIFW

java.lang.Object
  extended by edu.umd.cloud9.util.map.HMapIF
      extended by edu.umd.cloud9.io.map.HMapIFW
All Implemented Interfaces:
MapIF, Serializable, Cloneable, Writable

public class HMapIFW
extends HMapIF
implements Writable

Writable representing a map where keys are ints and values are floats.

One notable feature of this class is the ability to support lazy decoding, controlled by the setLazyDecodeFlag(boolean) method. In lazy decoding mode, when an object of this type is deserialized, key-value pairs are not inserted into the map, but rather held in arrays. The reduces memory used in cases where random access to values is not required. In lazy decoding mode, the raw keys and values may be fetched by the getKeys() and getValues() methods, respectively. The map can be subsequently populated with the decode() method.

Author:
Jimmy Lin
See Also:
Serialized Form

Constructor Summary
HMapIFW()
          Creates a HMapIFW object.
 
Method Summary
static HMapIFW create(byte[] bytes)
          Creates a HMapIFW object from a byte array.
static HMapIFW create(DataInput in)
          Creates a HMapIFW object from a DataInput.
 void decode()
          In lazy decoding mode, populates the map with deserialized data.
 int[] getKeys()
          In lazy decoding mode, returns an array of all the keys if the map hasn't been decoded yet.
static boolean getLazyDecodeFlag()
          Returns the value of the lazy decoding flag
 float[] getValues()
          In lazy decoding mode, returns an array of all the values if the map hasn't been decoded yet.
 boolean isDecoded()
          Returns whether or not this map has been decoded.
 void plus(HMapIFW m)
          Adds values from keys of another map to this map.
 void readFields(DataInput in)
          Deserializes the map.
 byte[] serialize()
          Returns the serialized representation of this object as a byte array.
static void setLazyDecodeFlag(boolean b)
          Sets the lazy decoding flag.
 int size()
          Returns the number of key-value mappings in this map.
 void write(DataOutput out)
          Serializes the map.
 
Methods inherited from class edu.umd.cloud9.util.map.HMapIF
clear, clone, containsKey, containsValue, dot, entrySet, get, getEntriesSortedByValue, getEntriesSortedByValue, isEmpty, keySet, length, normalize, plus, put, putAll, remove, toString, values
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface edu.umd.cloud9.util.map.MapIF
equals, hashCode
 

Constructor Detail

HMapIFW

public HMapIFW()
Creates a HMapIFW object.

Method Detail

readFields

public void readFields(DataInput in)
                throws IOException
Deserializes the map.

Specified by:
readFields in interface Writable
Parameters:
in - source for raw byte representation
Throws:
IOException

decode

public void decode()
In lazy decoding mode, populates the map with deserialized data. Otherwise, does nothing.

Throws:
IOException

isDecoded

public boolean isDecoded()
Returns whether or not this map has been decoded. If not in lazy decoding mode, this method always return true.


write

public void write(DataOutput out)
           throws IOException
Serializes the map.

Specified by:
write in interface Writable
Parameters:
out - where to write the raw byte representation
Throws:
IOException

serialize

public byte[] serialize()
                 throws IOException
Returns the serialized representation of this object as a byte array.

Returns:
byte array representing the serialized representation of this object
Throws:
IOException

create

public static HMapIFW create(DataInput in)
                      throws IOException
Creates a HMapIFW object from a DataInput.

Parameters:
in - source for reading the serialized representation
Returns:
a newly-created HMapIFW object
Throws:
IOException

create

public static HMapIFW create(byte[] bytes)
                      throws IOException
Creates a HMapIFW object from a byte array.

Parameters:
bytes - raw serialized representation
Returns:
a newly-created HMapIFW object
Throws:
IOException

setLazyDecodeFlag

public static void setLazyDecodeFlag(boolean b)
Sets the lazy decoding flag.


getLazyDecodeFlag

public static boolean getLazyDecodeFlag()
Returns the value of the lazy decoding flag


getKeys

public int[] getKeys()
In lazy decoding mode, returns an array of all the keys if the map hasn't been decoded yet. Otherwise, returns null.

Returns:
an array of all the keys

getValues

public float[] getValues()
In lazy decoding mode, returns an array of all the values if the map hasn't been decoded yet. Otherwise, returns null.

Returns:
an array of all the values

plus

public void plus(HMapIFW m)
Adds values from keys of another map to this map. This map will be decoded if it hasn't already been decode. The other map need not be decoded.

Parameters:
m - the other map

size

public int size()
Description copied from interface: MapIF
Returns the number of key-value mappings in this map.

Specified by:
size in interface MapIF
Overrides:
size in class HMapIF
Returns:
the number of key-value mappings in this map