diff options
author | René den Hertog | 2017-10-26 17:34:51 +0200 |
---|---|---|
committer | René den Hertog | 2017-10-26 17:34:51 +0200 |
commit | ac914c719d401c44cb2633127952b022bf563ff3 (patch) | |
tree | f7d2399b2ab6cddb86aa996096581a397ff407b9 /assignments/assignment2/Bounded Retransmission Protocol Tester/Source/brpcompare/HashAlphabet.java | |
parent | Finish assignment 2, part 1 (diff) |
'Bounded Retransmission Protocol' Blob
Diffstat (limited to 'assignments/assignment2/Bounded Retransmission Protocol Tester/Source/brpcompare/HashAlphabet.java')
-rwxr-xr-x | assignments/assignment2/Bounded Retransmission Protocol Tester/Source/brpcompare/HashAlphabet.java | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/assignments/assignment2/Bounded Retransmission Protocol Tester/Source/brpcompare/HashAlphabet.java b/assignments/assignment2/Bounded Retransmission Protocol Tester/Source/brpcompare/HashAlphabet.java new file mode 100755 index 0000000..46742d2 --- /dev/null +++ b/assignments/assignment2/Bounded Retransmission Protocol Tester/Source/brpcompare/HashAlphabet.java @@ -0,0 +1,54 @@ +package brpcompare; + +import net.automatalib.words.Alphabet; +import net.automatalib.words.abstractimpl.AbstractAlphabet; + +import java.util.ArrayList; +import java.util.HashMap; + +/** + * Created by joshua on 14/07/2016. + * I noticed that getSymbolIndex was called a lot. So I optimized for that, with a look up structure. + * Too bad it wasn't in LearnLib already. + */ +public class HashAlphabet<I> extends AbstractAlphabet<I> { + private final ArrayList<I> symbols; + private final HashMap<I, Integer> indices; + + public HashAlphabet(Alphabet<I> in) { + symbols = new ArrayList<>(in); + indices = new HashMap<>(in.size()); + for (int i = 0; i < symbols.size(); i++) { + indices.put(symbols.get(i), i); + } + } + + @Override + public I getSymbol(int index) { + return symbols.get(index); + } + + @Override + public int getSymbolIndex(I symbol) { + return indices.get(symbol); + } + + @Override + public int size() { + return symbols.size(); + } + + /* (non-Javadoc) + * @see net.automatalib.words.abstractimpl.AbstractAlphabet#writeToArray(int, java.lang.Object[], int, int) + */ + @Override + public void writeToArray(int offset, Object[] array, int tgtOfs, int num) { + System.arraycopy(symbols, offset, array, tgtOfs, num); + } + + @Override + public boolean containsSymbol(I symbol) { + return indices.containsKey(symbol); + } + +} |