## org.biojava.bio
Class SmallAnnotation

    java.lang.Object
      org.biojava.utils.AbstractChangeable
          org.biojava.bio.AbstractAnnotation
              org.biojava.bio.SmallAnnotation

All Implemented Interfaces:
  Serializable, Annotation, Changeable

    public class SmallAnnotation

extends AbstractAnnotation

Annotation that is optimized for memory usage. Access time is linear, so SmallAnnotations are not recommended when the number of entries is large. However, they are fine for small numbers of keys.

Since:
  1.2 A minimal-memory alternative to SimpleAnnotation When creating a large number of small Annotation instances, it is worth instantiating SmallAnnotation. Small is anything up to at least 30 properties but will vary with the JavaVM and underlying platform.
Author:
  Thomas Down, Matthew Pocock
See Also:
  Serialized Form

Field Summary

Fields inherited from interface org.biojava.bio.Annotation
`EMPTY_ANNOTATION, PROPERTY`

Constructor Summary
`SmallAnnotation()` Return a new SmallAnnotation optimised for small sets of properties.
`SmallAnnotation(Annotation ann)` Return a new SmallAnnotation that copies all values from another annoation.
`SmallAnnotation(Map map)` Return a new SmallAnnotation that copies all values from a Map.

Method Summary
`protected Map` `getProperties()` Implement this to return the Map delegate.
`protected boolean` `propertiesAllocated()` A convenience method to see if we have allocated the properties Map.

Methods inherited from class org.biojava.bio.AbstractAnnotation
`asMap, containsProperty, equals, getProperty, hashCode, keys, removeProperty, setProperty, toString`

Methods inherited from class org.biojava.utils.AbstractChangeable
`addChangeListener, addChangeListener, generateChangeSupport, getChangeSupport, hasListeners, hasListeners, isUnchanging, removeChangeListener, removeChangeListener`

Methods inherited from class java.lang.Object
`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

Methods inherited from interface org.biojava.utils.Changeable
`addChangeListener, addChangeListener, isUnchanging, removeChangeListener, removeChangeListener`

Constructor Detail

### SmallAnnotation

    public SmallAnnotation()

  Return a new SmallAnnotation optimised for small sets of properties.

### SmallAnnotation

    public SmallAnnotation(Annotation ann)

  Return a new SmallAnnotation that copies all values from another annoation.

  Parameters:
    `ann` - the Annoation to copy all values from
  Throws:
    `NullPointerException` - if ann is null

### SmallAnnotation

    public SmallAnnotation(Map map)

  Return a new SmallAnnotation that copies all values from a Map.

  Parameters:
    `map` - the Map to copy values from

Method Detail

### getProperties

    protected final Map getProperties()

  Description copied from class: `AbstractAnnotation`
  Implement this to return the Map delegate. Modifying this return value will modify the properties associated with this annotation. From code in the 1.2 version of AbstractAnnotation This is required for the implementation of an Annotation that extends AbstractAnnotation. Where possible implementations should be backed with a `LinkedHashMap` or similar so properties are iterated in the order they were added.

  Specified by:
    `getProperties` in class `AbstractAnnotation`
  Returns:
    a Map containing all properties

### propertiesAllocated

    protected final boolean propertiesAllocated()

  Description copied from class: `AbstractAnnotation`
  A convenience method to see if we have allocated the properties Map. This is required for the implementation of an Annotation that extends AbstractAnnotation.

  Specified by:
    `propertiesAllocated` in class `AbstractAnnotation`
  Returns:
    true if the properties have been allocated, false otherwise