败bai
柏bai
拜bai
掰bai
唄bai bei
庍bai xin
扒bai ba
拝bai
挀bai要求取出这些数据里面的多音字,请问各位该如何实现呢?
柏bai
拜bai
掰bai
唄bai bei
庍bai xin
扒bai ba
拝bai
挀bai要求取出这些数据里面的多音字,请问各位该如何实现呢?
解决方案 »
- 配置CAS错误No Certificate file specified or invalid file format
- JAVA开发,每次都是百万的数据量,用什么ORM比较好?
- 求大神解决一个hibernate连数据库的问题和一个JSP页面问题
- DB2存储过程入门级问题
- 如何用javaMail发送电子邮件
- 用Java将excel导入MySQL该注意什么?
- 高手帮忙看看啊。。
- 50分求问题解决方法~!
- 求救:Web服务多线程问题
- 用JAVA实现oracle的百万条记录,如何取,如果是一个resultset就会java.lang.OutOfMemoryError,
- 关于hibernate进行多表查询
- 反射机制调用的方法如何配置spring事务?
一个数组装一个字的拼音
再把数组设为map 中对应的值,
取的时候,map.get("字")
判断数组长度,得出是否是多音字。
现在整成这样的数组了,能取出多音字来吗?
2、如果存放在数据库,写sql的时候,按照 字分组,查询拼音。
封装到 Map<String ,List<String>> 中,一个字,对应多个拼音,即是多音字。3、如果是存储在文件中,则需要java的io读取文件,一行一行分解。
我估且做个假设了,假设数据是个String字组;多音字判断标准是中文后根一串拼音,然后一个空格,然后又是一串拼音。
public static void main(String[] args) {
Pattern p = Pattern.compile("[\\u4e00-\\u9fa5]{1}[a-z]+\\s{1}[a-z]+");
Matcher m;
String[] str = new String[]{"败bai","柏bai","拜bai","掰bai","唄bai bei","庍bai xin","扒bai ba","拝bai","挀bai"};
for(int i = 0;i < str.length;i++){
String s = str[i];
m = p.matcher(s);
if(m.matches()){
System.out.println(s);
}
}
}
如果楼主数据从数据库里取的,那就循环那个结果集吧,如果数据量很大,可以分多次读取。
String[] words = "败bai 柏bai 拜bai 掰bai 唄bai bei 庍bai xin 扒bai ba 拝bai 挀bai".split(" ");
for (int i = 0; i<words.length-1;i++) {
if (words[i].getBytes().length!=words[i].length()&&words[i+1].getBytes().length==words[i+1].length()) {
System.out.println("多音字 "+words[i].substring(0,1));
}
}
public static Map<String, List<String>> getMap(String[] s){
Map<String, List<String>> map = null ;
if(s!=null && s.length>1){
map = new HashMap<String, List<String>> () ;
for (int i = 0; i < s.length; i++) {
String str = s[i].substring(1) ;
List<String> list = null ;
if(map.containsKey(str)){
list = map.get(str) ;
list.add(s[i].substring(0, 1)) ;
}
else{
list = new ArrayList<String>() ;
list.add(s[i].substring(0, 1)) ;
map.put(str, list) ;
}
}
}
return map;
}
public static void main(String[] args) {
Map<String, List<String>> map = getMap("败bai 柏bai 拜bai 掰bai 唄bai bei 庍bai xin 扒bai ba 拝bai 挀bai".split(" ")) ;
for (String key : map.keySet()) {
System.out.println(key +"--" +map.get(key).size());
} }
}