public void recognition(Result result) { List<Term> terms = result.getTerms(); String end = null; String name; LinkedList<Term> mergeList = null; List<Term> list = new LinkedList<Term>(); for (Term term : terms) { name = term.getName(); if (end == null) { if ((end = ruleMap.get(name)) != null) { mergeList = new LinkedList<Term>(); mergeList.add(term); } else { list.add(term); } } else { mergeList.add(term); if (end.equals(name)) { Term ft = mergeList.pollFirst(); for (Term sub : mergeList) { ft.merage(sub); } ft.setNature(nature); list.add(ft); mergeList = null; end = null; } } } if (mergeList != null) { for (Term term : list) { list.add(term); } } result.setTerms(list); }