中文字符串怎么比较大小 a.compareTo(b)a<b -1a=b 0a>b 1 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 同意nimifeng(现在只想学点东西) public class CompareChinese{ public static void main(String[] args) { String s1="张三"; String s2="李四"; System.out.println(s1.compareTo(s2)); }};得出结果是:-2094请高手解答一下吧 直接compareTo肯定不对拉需要字典是怎么回事啊? 用什么字典? 字典是怎么回事??简单举个例子: 比如数据库有一个这样的表: 汉字 拼音 张 zhang 李 li 三 san 四 si . .就是字典表啊! 查 “张三” 的拼音为:“zhangsan”;再查“李四”为:“lisi”好了,比较"zhangsan"和"lisi" 谁都会8! 具体挺麻烦的,给你段代码,原来水木清华bbs java版上的,是将汉字转为汉语拼音,稍加修改就可以满足你的要求,源代码比较长,不能一次帖上来,分几次帖(注意:一共在一个类里面) import sun.io.CharToByteConverter;/** * Powered by zms * 可以随便引用,修改 * 但请保留此Powered by zms标志 */public class Chinese1 { private static String[] data1; private static int[] data2; private static int length=397; private static CharToByteConverter converter; static { data1=new String[length]; data2=new int[length]; data1[0]="a"; data2[0]=20319; data1[1]="ai"; data2[1]=20317; data1[2]="an"; data2[2]=20304; data1[3]="ang"; data2[3]=20295; data1[4]="ang"; data2[4]=20295; data1[5]="ao"; data2[5]=20292; data1[6]="ba"; data2[6]=20283; data1[7]="bai"; data2[7]=20265; data1[8]="ban"; data2[8]=20257; data1[9]="bang"; data2[9]=20242; data1[10]="bao"; data2[10]=20230; data1[11]="bei"; data2[11]=20051; data1[12]="ben"; data2[12]=20036; data1[13]="beng"; data2[13]=20032; data1[14]="bi"; data2[14]=20026; data1[15]="bian"; data2[15]=20002; data1[16]="biao"; data2[16]=19990; data1[17]="bie"; data2[17]=19986; data1[18]="bin"; data2[18]=19982; data1[19]="bing"; data2[19]=19976; data1[20]="bo"; data2[20]=19805; data1[21]="bu"; data2[21]=19784; data1[22]="ca"; data2[22]=19775; data1[23]="cai"; data2[23]=19774; data1[24]="can"; data2[24]=19763; data1[25]="cang"; data2[25]=19756; data1[26]="cao"; data2[26]=19751; data1[27]="ce"; data2[27]=19746; data1[28]="ceng"; data2[28]=19741; data1[29]="cha"; data2[29]=19739; data1[30]="chai"; data2[30]=19728; data1[31]="chan"; data2[31]=19725; data1[32]="chang"; data2[32]=19715; data1[33]="chao"; data2[33]=19540; data1[34]="che"; data2[34]=19531; data1[35]="chen"; data2[35]=19525; data1[36]="cheng"; data2[36]=19515; data1[37]="chi"; data2[37]=19500; data1[38]="chong"; data2[38]=19484; data1[39]="chou"; data2[39]=19479; data1[40]="chu"; data2[40]=19467; data1[41]="chuai"; data2[41]=19289; data1[42]="chuan"; data2[42]=19288; data1[43]="chuang"; data2[43]=19281; data1[44]="chui"; data2[44]=19275; data1[45]="chun"; data2[45]=19270; data1[46]="chuo"; data2[46]=19263; data1[47]="ci"; data2[47]=19261; data1[48]="cong"; data2[48]=19249; data1[49]="cou"; data2[49]=19243; data1[50]="cu"; data2[50]=19242; data1[51]="cuan"; data2[51]=19238; data1[52]="cui"; data2[52]=19235; data1[53]="cun"; data2[53]=19227; data1[54]="cuo"; data2[54]=19224; data1[55]="da"; data2[55]=19218; data1[56]="dai"; data2[56]=19212; data1[57]="dan"; data2[57]=19038; data1[58]="dang"; data2[58]=19023; data1[59]="dao"; data2[59]=19018; data1[60]="de"; data2[60]=19006; data1[61]="deng"; data2[61]=19003; data1[62]="di"; data2[62]=18996; data1[63]="dian"; data2[63]=18977; data1[64]="diao"; data2[64]=18961; data1[65]="die"; data2[65]=18952; data1[66]="ding"; data2[66]=18783; data1[67]="diu"; data2[67]=18774; data1[68]="dong"; data2[68]=18773; data1[69]="dou"; data2[69]=18763; data1[70]="du"; data2[70]=18756; data1[71]="duan"; data2[71]=18741; data1[72]="dui"; data2[72]=18735; data1[73]="dun"; data2[73]=18731; data1[74]="duo"; data2[74]=18722; data1[75]="e"; data2[75]=18710; data1[76]="en"; data2[76]=18697; data1[77]="er"; data2[77]=18696; data1[78]="fa"; data2[78]=18526; data1[79]="fan"; data2[79]=18518; data1[80]="fang"; data2[80]=18501; data1[81]="fei"; data2[81]=18490; data1[82]="fen"; data2[82]=18478; data1[83]="feng"; data2[83]=18463; data1[84]="fo"; data2[84]=18448; data1[85]="fou"; data2[85]=18447; data1[86]="fu"; data2[86]=18446; data1[87]="ga"; data2[87]=18239; data1[88]="gai"; data2[88]=18237; data1[89]="gan"; data2[89]=18231; data1[90]="gang"; data2[90]=18220; data1[91]="gao"; data2[91]=18211; data1[92]="ge"; data2[92]=18201; data1[93]="gei"; data2[93]=18184; data1[94]="gen"; data2[94]=18183; data1[95]="geng"; data2[95]=18181; data1[96]="gong"; data2[96]=18012; data1[97]="gou"; data2[97]=17997; data1[98]="gu"; data2[98]=17988; data1[99]="gua"; data2[99]=17970; data1[100]="guai"; data2[100]=17964; data1[101]="guan"; data2[101]=17961; data1[102]="guang"; data2[102]=17950; data1[103]="gui"; data2[103]=17947; data1[104]="gun"; data2[104]=17931; data1[105]="guo"; data2[105]=17928; data1[106]="ha"; data2[106]=17922; data1[107]="hai"; data2[107]=17759; data1[108]="han"; data2[108]=17752; data1[109]="hang"; data2[109]=17733; data1[110]="hao"; data2[110]=17730; data1[111]="he"; data2[111]=17721; data1[112]="hei"; data2[112]=17703; data1[113]="hen"; data2[113]=17701; data1[114]="heng"; data2[114]=17697; data1[115]="hong"; data2[115]=17692; data1[116]="hou"; data2[116]=17683; data1[117]="hu"; data2[117]=17676; data1[118]="hua"; data2[118]=17496; data1[119]="huai"; data2[119]=17487; data1[120]="huan"; data2[120]=17482; data1[121]="huang"; data2[121]=17468; data1[122]="hui"; data2[122]=17454; data1[123]="hun"; data2[123]=17433; data1[124]="huo"; data2[124]=17427; data1[125]="ji"; data2[125]=17417; data1[126]="jia"; data2[126]=17202; data1[127]="jian"; data2[127]=17185; data1[128]="jiang"; data2[128]=16983; data1[129]="jiao"; data2[129]=16970; data1[130]="jie"; data2[130]=16942; data1[131]="jin"; data2[131]=16915; data1[132]="jing"; data2[132]=16733; data1[133]="jiong"; data2[133]=16708; data1[134]="jiu"; data2[134]=16706; data1[135]="ju"; data2[135]=16689; data1[136]="juan"; data2[136]=16664; data1[137]="jue"; data2[137]=16657; data1[138]="jun"; data2[138]=16647; data1[139]="ka"; data2[139]=16474; data1[140]="kai"; data2[140]=16470; data1[141]="kan"; data2[141]=16465; data1[142]="kang"; data2[142]=16459; data1[143]="kao"; data2[143]=16452; data1[144]="ke"; data2[144]=16448; data1[145]="ken"; data2[145]=16433; data1[146]="keng"; data2[146]=16429; data1[147]="kong"; data2[147]=16427; data1[148]="kou"; data2[148]=16423; data1[149]="ku"; data2[149]=16419; data1[150]="kua"; data2[150]=16412; data1[151]="kuai"; data2[151]=16407; data1[152]="kuan"; data2[152]=16403; data1[153]="kuang"; data2[153]=16401; data1[154]="kui"; data2[154]=16393; data1[155]="kun"; data2[155]=16220; data1[156]="kuo"; data2[156]=16216; data1[157]="la"; data2[157]=16212; data1[158]="lai"; data2[158]=16205; data1[159]="lan"; data2[159]=16202; data1[160]="lang"; data2[160]=16187; data1[161]="lao"; data2[161]=16180; data1[162]="le"; data2[162]=16171; data1[163]="lei"; data2[163]=16169; data1[164]="leng"; data2[164]=16158; data1[165]="li"; data2[165]=16155; data1[166]="lia"; data2[166]=15959; data1[167]="lian"; data2[167]=15958; data1[168]="liang"; data2[168]=15944; data1[169]="liao"; data2[169]=15933; data1[170]="lie"; data2[170]=15920; data1[171]="lin"; data2[171]=15915; data1[172]="ling"; data2[172]=15903; data1[173]="liu"; data2[173]=15889; data1[174]="long"; data2[174]=15878; data1[175]="lou"; data2[175]=15707; data1[176]="lu"; 啊 这也行啊?不过谢谢 32zyc() public class ZH{ public static void main(String[] args) { String s1="张三"; String s2="李四"; char[] charArray = s1.toCharArray(); System.out.println(charArray[0]+Character.digit(charArray[0],16)); char[] charArray2 = s2.toCharArray(); System.out.println(charArray2[0]+Character.digit(charArray2[0],16)); System.out.println(s1.compareTo(s2)); }};输出2435126445-2094也就是张 与 李 的unicode值相差2094 在jsp里面:String a="张三";String b="李四";if(a.compareTo(b)>0)out.println(a); elseout.println(b); 这帖子不能编辑,charArray[0]+Character.digit(charArray[0],16)改(int)charArray[0]也是一样的,呵呵,强制类型转换输出unicode值 import java.util.Comparator; public class PinYinComparator implements Comparator { public int compare(Object o1, Object o2) { try { String s1=new String(o1.toString().getBytes("GB2312"),"ISO-8859-1"); String s2=new String(o2.toString().getBytes("GB2312"),"ISO-8859-1"); return s1.compareTo(s2); } catch (Exception e) { e.printStackTrace(); } return 0; } } import java.util.ArrayList; import java.util.Collections; public class Tester { public static void main(String[] args) { ArrayList list=new ArrayList(); list.add("啊"); list.add("包"); list.add("从"); list.add("随"); list.add("其"); list.add("在"); list.add("平"); list.add("人"); list.add("他"); list.add("以"); list.add("和"); list.add("就"); list.add("可"); list.add("了"); list.add("没"); list.add("额"); list.add("分"); list.add("个"); Collections.sort(list,new PinYinComparator()); for (int i=0;i<list.size();i++) { System.out.println(list.get(i)); } } } 抄来的,http://www.javaresearch.org/code/thread.jsp?column=721&thread=21645文章的作者猜想汉字本来就是按照拼音先后来排的,哈哈~可是张的unicode值比李小哦...这估计是GB2312和unicode的区别了...值得研究... compareTo是按Unicode排,不是按拼音排吧 对compareTo是按照unicode的,而且unicode好象不是按照拼音排中文的,呵呵 不用自己实现吧,这个应该有专门的包,到google找一下。 Java调用dll乱码 “蓝桥杯”决赛题4 关于Date类的问题 一个关于数组的问题 根本不会JAVA的人提出的问题,请赐教 关于socket的问题,高手请进!!! 很变态的键盘事件,高手能否帮我解决一下(急!) 一个JAVA 学习者的困惑。。。 以下程序要显示日期,请问错在那里? 求教Jacob问题: Can't map name to dispid: Tables 谁对用java语言写数据库管理系统(DBMS)感兴趣? 求教!!完成不了要下岗了!谁用java做过图形漫游功能??
{
public static void main(String[] args)
{
String s1="张三";
String s2="李四";
System.out.println(s1.compareTo(s2));
}
};得出结果是:
-2094请高手解答一下吧
简单举个例子:
比如数据库有一个这样的表:
汉字 拼音
张 zhang
李 li
三 san
四 si
.
.
就是字典表啊! 查 “张三” 的拼音为:“zhangsan”;再查“李四”为:“lisi”好了,比较"zhangsan"和"lisi" 谁都会8!
import sun.io.CharToByteConverter;
/**
* Powered by zms
* 可以随便引用,修改
* 但请保留此Powered by zms标志
*/
public class Chinese1 {
private static String[] data1;
private static int[] data2;
private static int length=397;
private static CharToByteConverter converter;
static {
data1=new String[length];
data2=new int[length];
data1[0]="a";
data2[0]=20319;
data1[1]="ai";
data2[1]=20317;
data1[2]="an";
data2[2]=20304;
data1[3]="ang";
data2[3]=20295;
data1[4]="ang";
data2[4]=20295;
data1[5]="ao";
data2[5]=20292;
data1[6]="ba";
data2[6]=20283;
data1[7]="bai";
data2[7]=20265;
data1[8]="ban";
data2[8]=20257;
data1[9]="bang";
data2[9]=20242;
data1[10]="bao";
data2[10]=20230;
data1[11]="bei";
data2[11]=20051;
data1[12]="ben";
data2[12]=20036;
data1[13]="beng";
data2[13]=20032;
data1[14]="bi";
data2[14]=20026;
data1[15]="bian";
data2[15]=20002;
data1[16]="biao";
data2[16]=19990;
data1[17]="bie";
data2[17]=19986;
data1[18]="bin";
data2[18]=19982;
data1[19]="bing";
data2[19]=19976;
data1[20]="bo";
data2[20]=19805;
data1[21]="bu";
data2[21]=19784;
data1[22]="ca";
data2[22]=19775;
data1[23]="cai";
data2[23]=19774;
data1[24]="can";
data2[24]=19763;
data1[25]="cang";
data2[25]=19756;
data1[26]="cao";
data2[26]=19751;
data1[27]="ce";
data2[27]=19746;
data1[28]="ceng";
data2[28]=19741;
data1[29]="cha";
data2[29]=19739;
data1[30]="chai";
data2[30]=19728;
data1[31]="chan";
data2[31]=19725;
data1[32]="chang";
data2[32]=19715;
data1[33]="chao";
data2[33]=19540;
data1[34]="che";
data2[34]=19531;
data1[35]="chen";
data2[35]=19525;
data1[36]="cheng";
data2[36]=19515;
data1[37]="chi";
data2[37]=19500;
data1[38]="chong";
data2[38]=19484;
data1[39]="chou";
data2[39]=19479;
data1[40]="chu";
data2[40]=19467;
data1[41]="chuai";
data2[41]=19289;
data1[42]="chuan";
data2[42]=19288;
data1[43]="chuang";
data2[43]=19281;
data1[44]="chui";
data2[44]=19275;
data1[45]="chun";
data2[45]=19270;
data1[46]="chuo";
data2[46]=19263;
data1[47]="ci";
data2[47]=19261;
data1[48]="cong";
data2[48]=19249;
data1[49]="cou";
data2[49]=19243;
data1[50]="cu";
data2[50]=19242;
data1[51]="cuan";
data2[51]=19238;
data1[52]="cui";
data2[52]=19235;
data1[53]="cun";
data2[53]=19227;
data1[54]="cuo";
data2[54]=19224;
data1[55]="da";
data2[55]=19218;
data1[56]="dai";
data2[56]=19212;
data1[57]="dan";
data2[57]=19038;
data1[58]="dang";
data2[58]=19023;
data1[59]="dao";
data2[59]=19018;
data1[60]="de";
data2[60]=19006;
data1[61]="deng";
data2[61]=19003;
data1[62]="di";
data2[62]=18996;
data1[63]="dian";
data2[63]=18977;
data1[64]="diao";
data2[64]=18961;
data1[65]="die";
data2[65]=18952;
data1[66]="ding";
data2[66]=18783;
data1[67]="diu";
data2[67]=18774;
data1[68]="dong";
data2[68]=18773;
data1[69]="dou";
data2[69]=18763;
data1[70]="du";
data2[70]=18756;
data1[71]="duan";
data2[71]=18741;
data1[72]="dui";
data2[72]=18735;
data1[73]="dun";
data2[73]=18731;
data1[74]="duo";
data2[74]=18722;
data1[75]="e";
data2[75]=18710;
data1[76]="en";
data2[76]=18697;
data1[77]="er";
data2[77]=18696;
data1[78]="fa";
data2[78]=18526;
data1[79]="fan";
data2[79]=18518;
data1[80]="fang";
data2[80]=18501;
data1[81]="fei";
data2[81]=18490;
data1[82]="fen";
data1[83]="feng";
data2[83]=18463;
data1[84]="fo";
data2[84]=18448;
data1[85]="fou";
data2[85]=18447;
data1[86]="fu";
data2[86]=18446;
data1[87]="ga";
data2[87]=18239;
data1[88]="gai";
data2[88]=18237;
data1[89]="gan";
data2[89]=18231;
data1[90]="gang";
data2[90]=18220;
data1[91]="gao";
data2[91]=18211;
data1[92]="ge";
data2[92]=18201;
data1[93]="gei";
data2[93]=18184;
data1[94]="gen";
data2[94]=18183;
data1[95]="geng";
data2[95]=18181;
data1[96]="gong";
data2[96]=18012;
data1[97]="gou";
data2[97]=17997;
data1[98]="gu";
data2[98]=17988;
data1[99]="gua";
data2[99]=17970;
data1[100]="guai";
data2[100]=17964;
data1[101]="guan";
data2[101]=17961;
data1[102]="guang";
data2[102]=17950;
data1[103]="gui";
data2[103]=17947;
data1[104]="gun";
data2[104]=17931;
data1[105]="guo";
data2[105]=17928;
data1[106]="ha";
data2[106]=17922;
data1[107]="hai";
data2[107]=17759;
data1[108]="han";
data2[108]=17752;
data1[109]="hang";
data2[109]=17733;
data1[110]="hao";
data2[110]=17730;
data1[111]="he";
data2[111]=17721;
data1[112]="hei";
data2[112]=17703;
data1[113]="hen";
data2[113]=17701;
data1[114]="heng";
data2[114]=17697;
data1[115]="hong";
data2[115]=17692;
data1[116]="hou";
data2[116]=17683;
data1[117]="hu";
data2[117]=17676;
data1[118]="hua";
data2[118]=17496;
data1[119]="huai";
data2[119]=17487;
data1[120]="huan";
data2[120]=17482;
data1[121]="huang";
data2[121]=17468;
data1[122]="hui";
data2[122]=17454;
data1[123]="hun";
data2[123]=17433;
data1[124]="huo";
data2[124]=17427;
data1[125]="ji";
data2[125]=17417;
data1[126]="jia";
data2[126]=17202;
data1[127]="jian";
data2[127]=17185;
data1[128]="jiang";
data2[128]=16983;
data1[129]="jiao";
data2[129]=16970;
data1[130]="jie";
data2[130]=16942;
data1[131]="jin";
data2[131]=16915;
data1[132]="jing";
data2[132]=16733;
data1[133]="jiong";
data2[133]=16708;
data1[134]="jiu";
data2[134]=16706;
data1[135]="ju";
data2[135]=16689;
data1[136]="juan";
data2[136]=16664;
data1[137]="jue";
data2[137]=16657;
data1[138]="jun";
data2[138]=16647;
data1[139]="ka";
data2[139]=16474;
data1[140]="kai";
data2[140]=16470;
data1[141]="kan";
data2[141]=16465;
data1[142]="kang";
data2[142]=16459;
data1[143]="kao";
data2[143]=16452;
data1[144]="ke";
data2[144]=16448;
data1[145]="ken";
data2[145]=16433;
data1[146]="keng";
data2[146]=16429;
data1[147]="kong";
data2[147]=16427;
data1[148]="kou";
data2[148]=16423;
data1[149]="ku";
data2[149]=16419;
data1[150]="kua";
data2[150]=16412;
data1[151]="kuai";
data2[151]=16407;
data1[152]="kuan";
data2[152]=16403;
data1[153]="kuang";
data2[153]=16401;
data1[154]="kui";
data2[154]=16393;
data1[155]="kun";
data2[155]=16220;
data1[156]="kuo";
data2[156]=16216;
data1[157]="la";
data2[157]=16212;
data1[158]="lai";
data2[158]=16205;
data1[159]="lan";
data2[159]=16202;
data1[160]="lang";
data2[160]=16187;
data1[161]="lao";
data2[161]=16180;
data1[162]="le";
data2[162]=16171;
data1[163]="lei";
data2[163]=16169;
data1[164]="leng";
data2[164]=16158;
data1[165]="li";
data2[165]=16155;
data1[166]="lia";
data2[166]=15959;
data1[167]="lian";
data2[167]=15958;
data1[168]="liang";
data2[168]=15944;
data1[169]="liao";
data2[169]=15933;
data1[170]="lie";
data2[170]=15920;
data1[171]="lin";
data2[171]=15915;
data1[172]="ling";
data2[172]=15903;
data1[173]="liu";
data2[173]=15889;
data1[174]="long";
data2[174]=15878;
data1[175]="lou";
data2[175]=15707;
data1[176]="lu";
{
public static void main(String[] args)
{
String s1="张三";
String s2="李四";
char[] charArray = s1.toCharArray();
System.out.println(charArray[0]+Character.digit(charArray[0],16));
char[] charArray2 = s2.toCharArray();
System.out.println(charArray2[0]+Character.digit(charArray2[0],16));
System.out.println(s1.compareTo(s2));
}
};
输出
24351
26445
-2094
也就是
张 与 李 的unicode值相差2094
String a="张三";
String b="李四";
if(a.compareTo(b)>0)
out.println(a);
else
out.println(b);
try {
String s1=new String(o1.toString().getBytes("GB2312"),"ISO-8859-1");
String s2=new String(o2.toString().getBytes("GB2312"),"ISO-8859-1");
return s1.compareTo(s2);
}
catch (Exception e) {
e.printStackTrace();
}
return 0;
}
} import java.util.ArrayList;
import java.util.Collections; public class Tester {
public static void main(String[] args) {
ArrayList list=new ArrayList();
list.add("啊");
list.add("包");
list.add("从");
list.add("随");
list.add("其");
list.add("在");
list.add("平");
list.add("人");
list.add("他");
list.add("以");
list.add("和");
list.add("就");
list.add("可");
list.add("了");
list.add("没");
list.add("额");
list.add("分");
list.add("个");
Collections.sort(list,new PinYinComparator());
for (int i=0;i<list.size();i++) {
System.out.println(list.get(i));
}
} }
抄来的,http://www.javaresearch.org/code/thread.jsp?column=721&thread=21645
文章的作者猜想汉字本来就是按照拼音先后来排的,哈哈~
可是张的unicode值比李小哦...这估计是GB2312和unicode的区别了...值得研究...