org.biojava.bio.symbol
Interface FiniteAlphabet

All Superinterfaces:
Alphabet, Annotatable, Changeable
All Known Implementing Classes:
AbstractAlphabet, SingletonAlphabet

public interface FiniteAlphabet
extends Alphabet

An alphabet over a finite set of Symbols.

This interface makes the distinction between an alphabet over a finite (and possibly small) number of symbols and an Alphabet over an infinite (or extremely large) set of symbols. Within a FiniteAlphabet, the == operator should be sufficient to decide upon equality for all AtomicSymbol instances.

The alphabet functions as the repository of objects in the fly-weight design pattern. Only symbols within an alphabet should appear in object that claim to use the alphabet - otherwise something is in error.

Author:
Matthew Pocock

Nested Class Summary
 
Nested classes inherited from class org.biojava.bio.Annotatable
Annotatable.AnnotationForwarder
 
Field Summary
 
Fields inherited from interface org.biojava.bio.symbol.Alphabet
EMPTY_ALPHABET, PARSERS, SYMBOLS
 
Fields inherited from interface org.biojava.bio.Annotatable
ANNOTATION
 
Method Summary
 void addSymbol(Symbol s)
          Adds a symbol to this alphabet.
 java.util.Iterator iterator()
          Retrieve an Iterator over the Symbols in this FiniteAlphabet.
 void removeSymbol(Symbol s)
          Remove a symbol from this alphabet.
 int size()
          The number of symbols in the alphabet.
 
Methods inherited from interface org.biojava.bio.symbol.Alphabet
contains, getAlphabets, getAmbiguity, getGapSymbol, getName, getSymbol, getTokenization, validate
 
Methods inherited from interface org.biojava.bio.Annotatable
getAnnotation
 
Methods inherited from interface org.biojava.utils.Changeable
addChangeListener, addChangeListener, isUnchanging, removeChangeListener, removeChangeListener
 

Method Detail

size

public int size()
The number of symbols in the alphabet.

Returns:
the size of the alphabet

iterator

public java.util.Iterator iterator()
Retrieve an Iterator over the Symbols in this FiniteAlphabet.

Each AtomicSymbol as for which this.contains(as) is true will be returned exactly once by this iterator in no specified order.

Returns:
an Iterator over the contained AtomicSymbol objects

addSymbol

public void addSymbol(Symbol s)
               throws IllegalSymbolException,
                      ChangeVetoException
Adds a symbol to this alphabet.

If the symbol matches more than one AtomicSymbol, then each symbol matching it will be added.

Parameters:
s - the Symbol to add
Throws:
IllegalSymbolException - if the symbol is null, or if for any reason it can't be added
ChangeVetoException - if either the alphabet doesn't allow symbols to be added, or the change was vetoed

removeSymbol

public void removeSymbol(Symbol s)
                  throws IllegalSymbolException,
                         ChangeVetoException
Remove a symbol from this alphabet.

If the symbol matches multiple AtomicSymbols, then each matching symbol it will be removed.

Parameters:
s - the Symbol to removeintGot
Throws:
IllegalSymbolException - if the symbol is null, or if for any reason it can't be removed
ChangeVetoException - if either the alphabet doesn't allow symbols to be added, or the change was vetoed