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}