下面的是个vector集合中的一个hashtable元素,顺序是乱的,如何按照可以key排序,并且直接显示value
{33=Email地址, 32=扣税序号, 31=实发数, 30=扣无薪假, 19=一般加班, 18=工会费, 17=补扣公积, 16=补扣失保, 15=补扣医疗, 14=补扣养老, 13=扣公积, 12=扣失保, 11=扣医疗, 10=扣养老, 9=月奖金, 29=扣探亲假, 8=独生子女, 28=扣事假, 7=基本工资, 27=扣病假, 6=部门, 26=个调税, 5=工号, 25=其它扣2, 4=姓名, 24=其它扣1, 23=补贴2, 22=补贴1, 21=节日加班, 20=周末加班}

解决方案 »

  1.   

    1,为什么要把一个Hashtable排序呢?
      

  2.   

    Hash表是散列存储的,要想排序存储,那是不可能的啦,
    所以,楼主可以试试两种思路,
    思路一:在使用数据的时候,先将HashTable中的元素取出来放到别的集合里面,然后按key排序,之后在使用。
    思路二:不使用HashTable,换成TreeMap,这样,可以实现排序存储,使用也就方便了,但是,TreeMap不是现成安全的。所以,楼主为了能够现成安全的操纵数据,还要看看JDK中Collections.synchronizedMap方法,以及未解决的一些问题。这样就可以实现,既是现成安全,又是排序存储了。
    当然,楼主也可以依照TreeMap自己封装一个线程安全的Map类,可以排序存储。
      

  3.   

    基于思路一:给楼主推荐一个方法,呵呵。
    HashTable table = new HashTable();// 假设这就是已知的HashTable
    Object [] array = table.keySet().toArray();
    Arrays.sort(array);
    //现在,array就是已经排好序的key数组了,如果楼主想要不同的排列顺序,可以调用sort(Object[] a, Comparator c) 方法,写一个实现Comparator接口的类就OK了。
    //遍历HashTable
    for(int i=0;i<array.length;i++){
    Object key = array[i];
    Object value = table.get(key);
    //这里的遍历,是按排序后的顺序的。
    }
      

  4.   

    这是偶试验的一个例子 不知道是否可以满足你的要求import java.util.*; 
    public class Jz

        public static void main(String args[]) 
        { 
          
          Hashtable<String,String> tableX=new Hashtable<String,String>();
          tableX.put("33","Email地址");
          tableX.put("27","扣病假");
          tableX.put("30","扣无薪假");
          TreeMap<String,String> tree=new TreeMap<String,String>(tableX);
          System.out.print(tree);
          } 

      

  5.   

    楼上跑题了。。 换种数据结构吧。。这个 hashtable 不能顺序存储