自己重载数据接口的sort,用二分法

解决方案 »

  1.   

    HashMap本身并不适合排序,也就是说如果你要排序的话,最好不要用HashMap~~如果要用,可以从HashMap中得到Collection来排序~~
      

  2.   

    首先你要明白自己的排序需不需要稳定排序另外有一个SortedMap,我也没用过,你可以看看java API文档我相信使用它会比排序更高效,它应该是插入元素时按顺序插入
      

  3.   

    Map是别人传过来的,
    我可以转化给set或者Collection,
    但是我不知道怎么对set进行排序....
      

  4.   

    稳定排序 是什么?
    我看看SortedMap先.
      

  5.   

    最简单的就用
    Map new_map = new TreeMap(now_map);
    就已经排好序了
      

  6.   

    treeMap按自然顺序,如果你按它默认的构造方法构造的话。
    LinkedHashMap是按你加入的顺序。
    另外:
    如果你要记录map加入的顺序,配合LinkedList使用。
    把标识放到list里!!!
    取的时候按list的顺序从
    map里取~~~~
      

  7.   

    取出Key的集合,然后调用Arrays.sort()
      

  8.   

    Map mapModifyied = getMap();
                        Object[] key =  mapModified.keySet().toArray();
                        Arrays.sort(key);
                        
                        这样经过了两次转换:Map --> Set , Set --> Object[], 
                        是不是很浪费?
                        
      

  9.   

    实现Comparable后,在插入元素时,已经按照Comparable排序了,迭代取出元素有什么问题?
      

  10.   

    你们说的Comparable是什么意思?
    我看了好长时间也没搞清楚,听说他可以自己规定比较方法,
    但是怎么用啊?
      

  11.   

    实践结果:      HashMap map = new HashMap();
          map.put("1", "1");
          map.put("3", "3");
          map.put("2", "2");
          map.put("4", "4");      Iterator iterator = map.keySet().iterator();      while(iterator.hasNext()){
              Object key = iterator.next();
              Object obj = map.get(key);
              System.out.println(obj);      }      System.out.println("---------------------------");      Object[] key =  map.keySet().toArray();
          Arrays.sort(key);      for (int i = 0; i < key.length; i++) {
              System.out.println(map.get(key[i]));
          }      
          运行上面的程序后打印的结果是
    3241---------------------------1234明显,加入的在hashmap里的排序跟key对象的Comparable没有任何关系.