利用TreeMap进行排序

java.util.TreeMap 放入其中的value,自动按key进行排序, 默认的排序规则按ascii码排序,如果是key是英文和数字不会有问题,如果中文

则会出现问题,需要自己写排序规则。

比较器需要实现java.text.Collator类,例如:

package cn.tjopen.mediaman.util;

import java.text.CollationKey;
import java.text.Collator;

public class CollatorComparator extends Collator {
 private Collator collator = Collator.getInstance();
 private int sort=1;
 @Override
 public int compare(String arg0, String arg1) {
  CollationKey key1 = collator.getCollationKey(arg0);
     CollationKey key2 = collator.getCollationKey(arg1);
     return sort*key1.compareTo(key2);
 }
 /**
  * 设定排序的方向
  * @param i 排序方向(正数:正序;负数:倒序)
  */
 public void setSort(int i){
  if(i>0){
   sort=1;
  }else if(i<0){
   sort=-1;
  }
 }
 @Override
 public CollationKey getCollationKey(String arg0) {
//   TODO Auto-generated method stub
  return null;
 }

 @Override
 public int hashCode() {
  // TODO Auto-generated method stub
  return 0;
 }

}

比较器的使用:

int sort = 1;//>0正序<0倒叙

CollatorComparator comparator = new CollatorComparator();
  comparator.setSort(sort);
  Map map = new TreeMap(comparator);

然后在把要排序的字段作为key,相应的信息作为对应的value,即可实现排序

注意:key值不能重复,如果排序字段有重复,则需要进行处理。

例如:方法一:在向map中存放数据时,先判断要放的key是否已存在,如果存在在当前值后面加一区分标记

方法二:如果信息中有不可能重复的字段,在排序字段后面加上这个不重复的字段值,把这个组合当做key

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值