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, SYMBOLS
Fields 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, validate
Methods inherited from interface org.biojava.bio.Annotatable
getAnnotation
Methods 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
-