Collections

Summary

These are utilities found in the net.okapia.osid.torrefacto.collect package.

Classes

IdHashMap

IdHashMap is a an extension of HashMap using OSID Ids as keys. 

IdHashMap<OsidObject> map = new IdHashMap<>();
map.put(object.getId(), object);

TypeHashMap

TypeHashMap is a an extension of HashMap using OSID Types as keys. 

TypeHashMap<OsidObject> map = new TypeHashMap<>();
map.put(object.getGenusType(), object);

MultiMaps and MultiHashMaps

A MultiMap is similar to java.util.Map but manages multiple values per key. MultiHashMap is an implementation of this interface.

The difference between MultiMap and java.util.Map are the following methods.

public java.util.Collection<V> get(K key);
public void putAll(K key, java.util.Collection<V> values);
public void putAll(java.util.Map<K, java.util.Collection<V>> map);
public void putAll(MultiMap<K, V> map);
public void remove(K key, V value);
public void removeValue(V value);
public java.util.Map<K, java.util.Collection<V>> asMap();

IdMultiHashMap and TypeMultiHashMap are convenience wrappers defining the keys as Ids and Types respectively.

TypeMultiHashMap<OsidObject> map = new TypeMultiHashMap<>();
map.put(type, object1);
map.put(type, object2);
map.put(type, object3);

for (OsidObject o : map.get(type)) {
   ...
}

MultiMaps return an empty collection if the key is not known as opposed to a null.

This package contains its own Collections utility class that wraps MultiHashMaps to be synchronized or unmodifiable.

Sets

TypeSet is a collection of osid.type.Types and implements the Types interface. Types is Iterable and defines methods for the adding, removing, and conversions to arrays and Collection. 

Types types = new TypeSet();
types.add(type1);
types.add(type2);
if (!types.contains(type1)) {
    throw new org.osid.UnsupportedException(type1 + " not supported");
}
for (Type type : types) {
    ...
}

TypeRefSet is a variant of TypeSet that maintains reference counts for managing type support in managers where type support is variant among other providers.

See Also

Copyright © 2014 Okapia.