public interface AlphabetIndex extends Changeable
Map between Symbols and index numbers.
The Symbols will all come from a single finite alphabet. The indices will range from 0 to getAlphabet().size()-1 inclusive with each symbol having a unique index. The resulting table can be used to look up array indices by symbol, which in many cases will be more efficient than performing a Map operation on, for example, a HashMap.
An index should do whatever is necessary to stay synchronized with its alphabet. It may chose to modify the index table with the alphabet, or to veto all changes to the alphabet that would invalidate the indexing scheme.
Modifier and Type | Field and Description |
---|---|
static ChangeType |
INDEX
Indicates that the index is changing, probably due to the underlying
alphabet changing.
|
Modifier and Type | Method and Description |
---|---|
FiniteAlphabet |
getAlphabet()
Retrieve the alphabet that this indexes.
|
int |
indexForSymbol(Symbol s)
Return the unique index for a symbol.
|
Symbol |
symbolForIndex(int i)
Retrieve the symbol for an index.
|
addChangeListener, addChangeListener, isUnchanging, removeChangeListener, removeChangeListener
static final ChangeType INDEX
Indicates that the index is changing, probably due to the underlying alphabet changing.
The previous & changed fields should be arrays of symbols in the order they are indexed in the unmodified and modified indices respectively.
FiniteAlphabet getAlphabet()
int indexForSymbol(Symbol s) throws IllegalSymbolException
s
- the Symbol to indexIllegalSymbolException
- if s is not a member of the indexed
alphabet, or if the indexer only indexes the AtomicSymbols
within an alphabet and s was not attomic.Symbol symbolForIndex(int i) throws IndexOutOfBoundsException
i
- the index of the symbolIndexOutOfBoundsException
- if i is negative or >=
getAlphabet().size()Copyright © 2014 BioJava. All rights reserved.