①,要实现首字母模糊匹配,首先我们需要得到你要搜索内容的首字母,对于java来说,有一个非常实用的包:pinyin4j.jar。
这个拼音包中的PinyinHelper 方法可以得到String的首字母。
②,得到首字母之后,我们需要将原有的汉字和得到的首字母拼入同一个list<MAP>中。
③,接下来就是对list的内容进行过滤,我用的是最简单的 for循环实现。
参考代码如下:
//拼装List
public List getSZM( List<Map> map ) {
for (Map m : map) {
m.put("SZM", getPinYinHeadChar((String) m.get("汉语字段")));
}
return list;()
}
//获取首字母
public static StringgetPinYinHeadChar(String str) {
String convert ="";
for (int j =0; j < str.length(); j++) {
char word = str.charAt(j);
// 提取汉字的首字母
String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word);
if (pinyinArray !=null) {
convert += pinyinArray[0].charAt(0);
}else {
convert += word;
}
}
return convert;
}
//查询(将组装好的List 传入查询方法,实现查询)
public ListqueryFundList(Map param, List> fundList) {
List> list =new ArrayList>();
String q = (String) param.get("q");
String fundName;
String fundCode;
String szm;
if (StringUtils.isNotEmpty(q)) {
for (Map m : fundList) {
fundName = (String) m.get("汉语字段");
szm = (String) m.get("SZM");
if ( fundName.contains(q) || szm.contains(q)) {
list.add(m);
}
}
}else {
list = fundList;
}
return list;
}
第一次写文章,请多多包涵。
网友评论