如果
map.put("1","aaa");
map.put("2","bb");
map.put("4","aaa");
map.put("3","ddd");
如何按value值排序输出?求简单的方法如果string []str1={"aaa","1"};
map.put("1",str1);
string []str2={"bb","123"};
map.put("2",str2);
string []str3={"aaa","23"};
map.put("4",str3);
string []str4={"ddf","11"};
map.put("3",str4);如何按value中的stri的第一项(aaa,bb,aaa,ddf)进行排序输出?

解决方案 »

  1.   

    把Value都存放到一个Set里面,然后Set.toArray就可以了。
      

  2.   

    用TreeMap得了咯
    想好是要达到什么目的,然后再选择容器。
      

  3.   

    问题是:
    treemap也好,set也好,值都不能是重复的。
    但是value值可以重复阿
      

  4.   

    输出的时候不是只输出value(这样好办,取出所有的value放到arrays里再sort)
    我需要的是输出key,value对,并且按value排序
    如例一输出为:
    aaa 1
    aaa 4
    bb  2
    ddd 3
      

  5.   

    数据先放进map中,以防key值的重复,再从map中取出键值对,放入Pair对象中,Pair类要实现comparable接口,比较对象大小采用value值,再把Pair对象放入ArrayList,或者数组中,进行排序。
      

  6.   

    public Map countWordSort( String[] words )
        {
            Map map = countWord(words);        Object[] keyArray = (Object[]) map.keySet().toArray();
            Object[] valueArray = (Object[]) map.values().toArray();
            int keyArrayLength = keyArray.length;
            String tmp = null;        /*
             * Bubble sort 
             */
            for (int i = 0; i < keyArrayLength; i++)
            {
                
                for (int j = 0; j < keyArrayLength-i-1; j++)
                {
                    int value1 = Integer.parseInt((String) valueArray[j]);
                    int value2 = Integer.parseInt((String) valueArray[j+1]);
                    
                    if (value2 > value1)
                    {
                        tmp = (String) valueArray[j+1];
                        valueArray[j+1] = valueArray[j];
                        valueArray[j] = tmp;                    tmp = (String) keyArray[j+1];
                        keyArray[j+1] = keyArray[j];
                        keyArray[j] = tmp;
                    }            }
            }        Map mapReturn = new LinkedHashMap();        for (int i = 0; i < keyArrayLength; i++)
            {
                mapReturn.put(keyArray[i], valueArray[i]);
            }        return mapReturn;
        }
      

  7.   

    Onelee(加油````^..^)
    说的对,应该用treeMap,另外treeMapl里面的value应该实现Comparable接口!
      

  8.   

    不过如果value你用String的话,应该不用了!String已经实现了Comparable接口!
      

  9.   

    to:NsGFr(elan)
    你的思路和我想的差不多,但是我不知道“treeMapl里面的value应该实现Comparable”如何实现。我现在已经实现了我要的功能,大概是这样的,把之前的key,value都放到一个类里面。
    然后类的对象放入arraylist。
    可以通过Comparable接口对类中某个属性进行排序。要对哪个值排序就对哪个值排。呵呵请教大家如何实现“treeMapl里面的value应该实现Comparable”?
      

  10.   

    public class Domain implements Comparable
    {
    public Domain()
    {
    //....
    } private int placeOrder = 0; public int getPlaceOrder() 
    {
    return placeOrder;
    } public void setPlaceOrder(int placeOrder) 
    {
    this.placeOrder = placeOrder;
    } public int compareTo(Object o)
    {
    if (!(o instanceof Domain))
    {
    throw new RuntimeException("[INFO]: Domains compare exception, the two objects's type incompatible! ");
    }

    return placeOrder - ((Domain)o).getPlaceOrder();
    }}
    就这样子了。看看jdk的文档上面有详细的说明!
      

  11.   

    Red-Black tree based implementation of the SortedMap interface. This class guarantees that the map will be in ascending key order, sorted according to the natural order for the key's class (see Comparable), or by the comparator provided at creation time, depending on which constructor is used.文档上的说明!晕死,以前没有仔细看,是以key的顺序排的! 呵呵~~不好意思!