Interface FiniteAlphabet
- All Superinterfaces:
Alphabet,Annotatable,Changeable
- All Known Implementing Classes:
AbstractAlphabet,IntegerAlphabet.SubIntegerAlphabet,SimpleAlphabet,SingletonAlphabet,SoftMaskedAlphabet
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/interfaces inherited from interface org.biojava.bio.Annotatable
Annotatable.AnnotationForwarder -
Field Summary
Fields inherited from interface org.biojava.bio.symbol.Alphabet
EMPTY_ALPHABET, PARSERS, SYMBOLSFields inherited from interface org.biojava.bio.Annotatable
ANNOTATION -
Method Summary
Methods inherited from interface org.biojava.bio.symbol.Alphabet
contains, getAlphabets, getAmbiguity, getGapSymbol, getName, getSymbol, getTokenization, validateMethods inherited from interface org.biojava.bio.Annotatable
getAnnotationMethods inherited from interface org.biojava.utils.Changeable
addChangeListener, addChangeListener, isUnchanging, removeChangeListener, removeChangeListener
-
Method Details
-
size
int size()The number of symbols in the alphabet.- Returns:
- the size of the alphabet
-
iterator
Retrieve an Iterator over the AtomicSymbols 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
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 addedChangeVetoException- if either the alphabet doesn't allow symbols to be added, or the change was vetoed
-
removeSymbol
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 removedChangeVetoException- if either the alphabet doesn't allow symbols to be added, or the change was vetoed
-