jsp页面下拉列表中动态获取的数据怎么按照首字母顺序排序? 100

数据已经获取到了... 数据已经获取到了 展开
 我来答
ztw1122
2016-03-24 · TA获得超过1088个赞
知道小有建树答主
回答量:2382
采纳率:80%
帮助的人:943万
展开全部
  1. 确保你的数据是用实体类保存,而不是用Map之类的;

  2. 获取的数据确保是用List保存的。

  3. 实现输入字符获取首字母的方法(放在util里,方法在下面)

  4. 实体类实现Comparable接口,先获取name(假定是要按这个字段的首字母排序)的首字母与接口传入的实体类的name的首字母比较,大了返回1,等于返回0,小于返回-1;这个比较简单

  5. 在跳转之前,调用获取的数据的List.sort()方法就会按首字母排序好了。

private char firstBetter(String str){
char[] chrs={'啊','芭','擦','搭','蛾','发','噶','哈','击','喀','垃','妈','拿','哦','啪','期','然','撒','塌','挖','昔','压','匝'};
char[] btts={'a','b','c','d','e','f','g','h','j','k','l','m',
'n','o','p','q','r','s','t','w','x','y','z'};
char c=str.charAt(0);
int code=getGBKCode(c);
if(code<chrs[0])return c;
if(code==63182)return 'x';
for(int i=0;i<chrs.length;i++){
if(i<(chrs.length-1)){
if(code>=getGBKCode(chrs[i]) && code<getGBKCode(chrs[i+1])){
System.out.println(c+" "+code+"   "+"  "+chrs[i]+"  "+getGBKCode(chrs[i])+" "+getGBKCode(chrs[i+1])+"  "+i);
return btts[i];
}
}else{
if(code>=getGBKCode(chrs[i]) && code<63486){
return btts[i];
}
}
}
return c;
}
private int getGBKCode(char chr){
String tmp=chr+"";
byte[] bytes=null;
try {
bytes = tmp.getBytes("GBK");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
int one=bytes[0]>=0?bytes[0]:bytes[0]+256;
int num;
if(bytes.length>1){
int two=bytes[1]>=0?bytes[1]:bytes[1]+256;
num=one*256+two;
}else{
num=one;
}
return num;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式