利用TreeMap进行排序

    技术2022-05-12  15

    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)