日期:2014-05-20  浏览次数:20614 次

请教一个简单的数组排序问题
引用
提问:B有10个水果,A有20个水果,要求排序
结果要求:A有20个水果,B有10个水果。
注意:不能出现A有10个水果的情况。

A,B是String型数组的元素,数量(10,20)是一个int型数组,如何保证在排序的同时,还保持如A,20、B,10这样的对应关系?

可以的话请尽可能采用数组的方法来做


------解决方案--------------------
Java code


    public static List<Integer> getList(List<Integer> list){
         Collections.sort(list, new Comparator<Integer>() {
            
                         @Override
                         public int compare(Integer o1, Integer o2) {
                             return o1.intValue()-o2.intValue()  ;
                         }
                     });
        return list ;
        
    }
    
    public static void main(String[] args) {
    String s[] =  {"{2,3,4,5,21,8,12,23,7,6}","{2,3,4,5,21,8,12,23,7,6,12,13,14,15,211,81,121,231,71,61}"} ;
    Map<Integer, List<Integer>> map = new HashMap<Integer, List<Integer>>() ;
    for (int i = 0; i < s.length; i++) {
        List<Integer> list = new ArrayList<Integer>() ;
         
         s[i] = s[i].substring(1, s[i].length()-1);
         String[] ss = s[i].split(",") ;
         for (int j = 0; j < ss.length; j++) {
             Integer integer =    Integer.parseInt(ss[j]) ;
             list.add(integer) ;
         }
         list =     getList(list) ;
         map.put(i, list) ;
    }
        
    for (int i = 0; i < s.length; i++) {
        s[i] ="{" ;
        int j  = 0 ;
        for (Integer integer : map.get(i)) {
            if(j == 0)
                s[i] = s[i]+integer.toString() ;
            else
                 s[i] = s[i]+","+integer.toString() ;
            j= j+ 1;
        }
        s[i] = s[i]+"}" ;
    }
    
    System.out.println(s[0]+ s[1]);
}