public class NineKeyQuery implements IQuery { private static final String[] NINE_KEY_WORD = {"", "", "ABC", "DEF", "GHI", "JKL", "MNO", "PQRS", "TUV", "WXYZ"}; private final List<IUser> filteredModelListByNumber = new ArrayList<>(); private final List<IUser> filteredModelListByName = new ArrayList<>(); private final Set<IUser> result = new LinkedHashSet<>();
@Override public List<? extends IUser> filter(List<? extends IUser> data, String queryString) { if (queryString.isEmpty()) { return data; } result.clear(); result.addAll(queryByNumber(data, queryString)); result.addAll(queryByName(data, queryString)); return new ArrayList<>(result); }
private List<IUser> queryByName(List<? extends IUser> data, String queryString) { filteredModelListByName.clear(); if (data != null) { for(int i = 0; i < data.size();i++){ //取出拼音 String[] pinyin = PinyinUtils.getPinyinString(data.get(i).getName());
//分别为当前正在检索的字的index,和该词的pinyin的offset,对每个User分别从第0个的第0位开始查询 int wordNow = 0, pinyinOffset = 0; boolean flag = false; for (int n = 0; n < queryString.length(); n++) { char number = queryString.charAt(n);