# Class IntegerMap

java.lang.Object
net.sf.statcvs.util.IntegerMap

public class IntegerMap extends Object
Utility class for storing a map from `Object`s to `int`s. This class makes it easy to sort by key or value, and provides useful features like `sum()`, `max()`, and percent calculation.

The keys must be comparable, for example `String`s.

Behaviour for `null` keys is unspecified.

Version:
  $Id: IntegerMap.java,v 1.17 2009/08/20 17:44:05 benoitx Exp $
Author:
  Richard Cyganiak

## Constructor Summary

Constructors
Constructor
Description
`IntegerMap()`

## Method Summary

Modifier and Type
Method
Description
`void`
`addInt(Object key, int addValue)`
Adds an `int` to the value stored at a key.
`double`
`average()`
Returns the average of all values in the map.
`boolean`
`contains(Object key)`
Returns `true` if the map contains a value for this key.
`void`
`dec(Object key)`
Same as `addInt(key, -1)`
`int`
`get(Object key)`
Gets a value from the map.
`Integer`
`getInteger(Object key)`
Same as `get(Object)`, but returns an `Integer`, not an `int`.
`double`
`getPercent(Object key)`
Gets the value stored at a key as a percentage of all values in the map.
`double`
`getPercentOfMaximum(Object key)`
Gets the value stored at a key as a percentage of the maximum value in the map.
`void`
`inc(Object key)`
Same as `addInt(key, 1)`
`Iterator`
`iteratorSortedByKey()`
Returns an iterator on the keys, sorted by key ascending.
`Iterator`
`iteratorSortedByValue()`
Returns an iterator on the keys, sorted by values ascending.
`Iterator`
`iteratorSortedByValueReverse()`
Returns an iterator on the keys, sorted by values descending.
`Set`
`keySet()`
Returns a set view of the keys.
`int`
`max()`
Returns the maximum value in the map.
`void`
`put(Object key, int value)`
Puts a value into the map, overwriting any previous value for the same key.
`void`
`remove(Object key)`
Deletes a value from the map.
`int`
`size()`
Returns the number of key-value pairs stored in the map.
`int`
`sum()`
Returns the sum of all values in the map.

### Methods inherited from class Object

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

## Constructor Details

### IntegerMap

public IntegerMap()

## Method Details

### put

public void put(Object key, int value)
Puts a value into the map, overwriting any previous value for the same key.

Parameters:
  `key` - an `Object` which is used as key.
  `value` - the `int` value to be stored at this key.

### get

public int get(Object key)
Gets a value from the map. Returns the value which was stored in the map at the same key before. If no value was stored for this key, 0 will be returned.

Parameters:
  `key` - an `Object` which is used as key.
Returns:
  the value for this key

### getInteger

public Integer getInteger(Object key)
Same as `get(Object)`, but returns an `Integer`, not an `int`.

Parameters:
  `key` - the key to get the value for
Returns:
  the value wrapped in an `Integer` object

### getPercent

public double getPercent(Object key)
Gets the value stored at a key as a percentage of all values in the map.

Parameters:
  `key` - the key to get the value for
Returns:
  the value as a percentage of the sum of all values

### getPercentOfMaximum

public double getPercentOfMaximum(Object key)
Gets the value stored at a key as a percentage of the maximum value in the map. For the maximum value, this will return 100.0. For a value half as large as the maximum value, this will return 50.0.

Parameters:
  `key` - the key to get the value for
Returns:
  the value as a percentage of largest value in the map

### addInt

public void addInt(Object key, int addValue)
Adds an `int` to the value stored at a key. If no value was stored before at this key, the `int` will be stored there.

Parameters:
  `key` - the key to whose value `addValue` should be added
  `addValue` - the `int` to be added

### inc

public void inc(Object key)
Same as `addInt(key, 1)`

Parameters:
  `key` - the key whose value should be increased

### dec

public void dec(Object key)
Same as `addInt(key, -1)`

Parameters:
  `key` - the key whose value should be decreased

### remove

public void remove(Object key)
Deletes a value from the map. This is different from `put(key, 0)`. Removing will reduce the size of the map, putting 0 will not.

Parameters:
  `key` - the key that should be removed

### contains

public boolean contains(Object key)
Returns `true` if the map contains a value for this key.

Parameters:
  `key` - the key to check for
Returns:
  `true` if the key is in the map

### size

public int size()
Returns the number of key-value pairs stored in the map.

Returns:
  the number of key-value pairs stored in the map

### keySet

public Set keySet()
Returns a set view of the keys. The set will be in ascending key order.

Returns:
  a `Set` view of all keys

### iteratorSortedByKey

public Iterator iteratorSortedByKey()
Returns an iterator on the keys, sorted by key ascending.

Returns:
  an iterator on the keys

### iteratorSortedByValue

public Iterator iteratorSortedByValue()
Returns an iterator on the keys, sorted by values ascending.

Returns:
  an iterator on the keys

### iteratorSortedByValueReverse

public Iterator iteratorSortedByValueReverse()
Returns an iterator on the keys, sorted by values descending.

Returns:
  an iterator on the keys

### sum

public int sum()
Returns the sum of all values in the map.

Returns:
  the sum of all values in the map

### average

public double average()
Returns the average of all values in the map.

Returns:
  the average of all values in the map

### max

public int max()
Returns the maximum value in the map.

Returns:
  the maximum value in the map.