我有一个Hashtable KEY中放的是 “渠道1”、“渠道2”、“渠道3”、“渠道4”、“渠道5”、“渠道6”等,我在输出是想让他排序,让他就按照1,2,3这样输出,应该怎么写?能帮我写个小例子看看吗,谢谢!

解决方案 »

  1.   

    Collections.sort()方法可以实现你的需求
      

  2.   

    那个我没用过,怎么写,比如我Hashtable all  
      

  3.   


    public class Test {
        public static void main(String[] args){
            Hashtable ht = new Hashtable();
            ht.put("渠道1", "value1");
            ht.put("渠道2", "value2");
            ht.put("渠道3", "value3");
            ht.put("渠道4", "value4");
            ht.put("渠道5", "value5");
            
            Set<String> keySet = ht.keySet();
            String[] str = new String[keySet.size()];
            str = keySet.toArray(str);
            Arrays.sort(str);
            Iterator<String> it = Arrays.asList(str).iterator();
            while (it.hasNext()) {
                String key = it.next();
                System.out.println(key);  // key
                // System.out.println(map.get(key)); //value
            }
        }
    }不会是JDK1.5以下的吧。。用Hashtable不用HashMap吗。。
      

  4.   

    额。。最后个value应该是// System.out.println(ht.get(key)); //value
    我一开始用的Hashmap后来换成Hashtable而且加了泛型的。。
      

  5.   

    可以把Hashtable换成TreeMap,这样加入的元素就已经是排序的了。
    public static void main(String [] args)throws Exception{
    Map<String, Integer> m = new TreeMap<String, Integer>();
    m.put("渠道1", 1);
    m.put("渠道5", 1);
    m.put("渠道3", 1);
    m.put("渠道2", 1);
    m.put("渠道4", 1); System.out.println(m.keySet());

      

  6.   

    怎么是对键值排序,应该是对它们对就的VALUE排序吧
      

  7.   

    JDK1.5之前版本。。import java.util.Arrays;
    import java.util.Hashtable;
    import java.util.Iterator;
    import java.util.Set;public class Test {
        public static void main(String[] args){
            Hashtable ht = new Hashtable();
            ht.put("渠道1", "value1");
            ht.put("渠道2", "value2");
            ht.put("渠道5", "value5");
            ht.put("渠道6", "value6");
            ht.put("渠道4", "value4");
            ht.put("渠道3", "value3");
            
            Set keySet = ht.keySet();
            Object[] str = new Object[keySet.size()];
            str = keySet.toArray(str);
            Arrays.sort(str);
            Iterator it = Arrays.asList(str).iterator();
            while (it.hasNext()) {
                String key = (String)it.next();
                System.out.println(key);  // key
                // System.out.println((String)ht.get(key)); //value
            }
        }
    }
      

  8.   

    public class Test {
        public static void main(String[] args){
            Hashtable ht = new Hashtable();
            ht.put("渠道1", "value1");
            ht.put("渠道2", "value2");
            ht.put("渠道3", "value3");
            ht.put("渠道4", "value4");
            ht.put("渠道5", "value5");
            
            Set<String> keySet = ht.keySet();
            String[] str = new String[keySet.size()];
            str = keySet.toArray(str);
            Arrays.sort(str);
            Iterator<String> it = Arrays.asList(str).iterator();
            while (it.hasNext()) {
                String key = it.next();
                System.out.println(key);  // key
                // System.out.println(map.get(key)); //value
            }
        }
    }
    这个我用过,你试过这样吗1,2......10,11,12,他就会这么排序的1,10,11,12,2,3,4.....,你这怎么处理?
      

  9.   

    把数字做为key渠道N做为Value不行吗。。
      

  10.   

    不行,在我这必须要用渠道做key的,没办法
      

  11.   

    如果一定是渠道+数字的形式的话也简单,把渠道replace成一个数字再排序,打印的时候替换回来
      

  12.   

    Hashtable在赋值的时候就已经对键值排序了,就降序排列
    下面是我写的一个测试程序,ZL参考下。/**
     * 测试HashTable的排序问题
     */
    package net.csdn.blog.johnston;import java.util.Arrays;
    import java.util.Hashtable;
    import java.util.Set;/**
     * @author Administrator
     *
     */
    public class TestHashTable { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    Hashtable<String, String> ht = new Hashtable<String, String>(); //Hashtable是赋值的时候已经对键值进行降序排列了
    ht.put("渠道5", "5");
    ht.put("渠道3", "3");
    ht.put("渠道4", "4");
    ht.put("渠道2", "2");
    ht.put("渠道1", "1");

    System.out.println("排序前的ht:" + ht);
    //获得键值
    Set set = ht.keySet();
    Object[] list = set.toArray();
    //对键值排序
    Arrays.sort(list);
    //输出键值
    for (Object key : list) {
    System.out.println(key);
    }

    //把排序之后的键值对,重新赋给另一个Hashtable
    Hashtable<String, String> sortHt = new Hashtable<String, String>();
    for (int i=0; i<list.length; i++) {
    String key = list[i].toString();
    String value = ht.get(key);
    System.out.println("key" + key + "value:" + value);
    sortHt.put(key, value);
    }
    System.out.println("排序后的sortHt:" + sortHt);
    }}
    运行结果:
    排序前的ht:{渠道5=5, 渠道4=4, 渠道3=3, 渠道2=2, 渠道1=1}
    渠道1
    渠道2
    渠道3
    渠道4
    渠道5
    key渠道1value:1
    key渠道2value:2
    key渠道3value:3
    key渠道4value:4
    key渠道5value:5
    排序后的sortHt:{渠道5=5, 渠道4=4, 渠道3=3, 渠道2=2, 渠道1=1}
      

  13.   


            Hashtable ht = new Hashtable();
            ht.put("渠道10", "value2");
            ht.put("渠道11", "value2");
            ht.put("渠道12", "value2");
            ht.put("渠道1", "value1");
            ht.put("渠道2", "value2");
            ht.put("渠道5", "value5");
            ht.put("渠道6", "value6");
            ht.put("渠道4", "value4");
            ht.put("渠道3", "value3");         
            Set keySet = ht.keySet();
            Object[] str = new Object[keySet.size()];
            str = keySet.toArray(str);
            int[] temp = new int[keySet.size()];
            for(int i = 0; i < str.length; i++) {
                temp[i] = Integer.parseInt(str[i].toString().replaceAll("[^\\d]", ""));
            }
            Arrays.sort(temp);
            for(int i = 0; i < temp.length; i++) {
                System.out.println("渠道" + temp[i]);
            }不是渠道+数字就不行。。