001package net.automatalib.words.impl;
002
003import java.util.List;
004
005import net.automatalib.words.abstractimpl.AbstractAlphabet;
006
007public class ListAlphabet<I> extends AbstractAlphabet<I> {
008        
009        private final List<? extends I> list;
010
011        public ListAlphabet(List<? extends I> list) {
012                this.list = list;
013        }
014
015        @Override
016        public I getSymbol(int index) throws IllegalArgumentException {
017                return list.get(index);
018        }
019
020        @Override
021        public int getSymbolIndex(I symbol) throws IllegalArgumentException {
022                int idx = list.indexOf(symbol);
023                if(idx == -1)
024                        throw new IllegalArgumentException("Symbol " + symbol + " is not contained in the alphabet");
025                return idx;
026        }
027
028        @Override
029        public I get(int index) {
030                return list.get(index);
031        }
032
033        @Override
034        public int size() {
035                return list.size();
036        }
037
038}