package pl.zbronk.nlp.gr; import java.util.ArrayList; import java.util.Collection; import java.util.TreeMap; /** * Słownik fleksemów * * @author Zbigniew Bronk */ public class FlexDictionary { public FlexDictionary() { } public FlexDictionary(Collection coll) { for (Flexem flexem : coll) { this.add(flexem); } } public FlexDictionary(Flexem... flexems) { for (Flexem flexem : flexems) { this.add(flexem); } } public void addAll(Collection flexems) { for (Flexem flexem : flexems) { add(flexem); } } public void add(Flexem f) { ArrayList flist = lmap.get(f.getLemma()); if (flist==null) { flist=new ArrayList<>(); lmap.put(f.getLemma(), flist); } flist.add(f); } public ArrayList getAll() { ArrayList list=new ArrayList<>(); Collection> vlists = lmap.values(); for (ArrayList list0 : vlists) { list.addAll(list0); } return list; } private static final long serialVersionUID = 1L; private TreeMap> lmap=new TreeMap<>(); public ArrayList getFlexems(String lemma) { return lmap.get(lemma); } public ArrayList getFlexems(String lemma,FlexemClass fc) { return getFlexems(lemma, fc, 0); } public ArrayList getFlexems(String lemma,FlexemClass fc,int vers) { ArrayList flexems = new ArrayList<>(); ArrayList flexems0 = lmap.get(lemma); if (flexems0==null) return null; for (Flexem flexem : flexems0) { if (flexem.getFlexemClass()!=fc) continue; if (vers>0 && flexem.getVersion()!=vers) continue; flexems.add(flexem); } return flexems; } public String getNextLemma(String after) { return lmap.higherKey(after); } }