首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

会合,先按照value数量排序,再按照value值大小排序.求解!

2013-06-19 
集合,先按照value数量排序,再按照value值大小排序...求解!!如题,这个方法.我用java写出来的方法.这么长...

集合,先按照value数量排序,再按照value值大小排序...求解!!
如题,这个方法.我用java写出来的方法.这么长...

可是,这个要写在actionscript里面,但是actionscript里面没有java的那么多好用的方法.

谁能求解出这道智力题?用最好用actionscript写出来,不要用Collections,iterator 迭代啊什么的...

public class BubbleSort implements Sort{ 
public void sort(int[] a) {
this.bubble(a,false);

public static void bubble(int[] number,boolean b) {
        boolean flag = true; 
        for(int i = 0; i < number.length-1 && flag; i++) { 
            flag = false; 
            for(int j = 0; j < number.length-i-1; j++) {
        if(same(number[j+1] < number[j],b)) { 
                  swap(number, j+1, j); 
                  flag = true; 
              } 
    } 
        }
    }
    private static boolean same(boolean a ,boolean b){
    if(a==b){
    return true;
    }
    return false;
    }
    private static void swap(int[] number, int i, int j) {
        int t = number[i]; 
        number[i] = number[j]; 
        number[j] = t;
    }
    public static int frequency(int[] c, int o) {
        int result = 0;
       for (int i = 0; i < c.length; i++) {
if(o==c[i]){
result++;
}
}
        return result;
    }
@SuppressWarnings("unchecked")
public static void main(String[] args) {
int[] a=new int[]{1,1,1,9,9,3,3,5,5,5,5,7,2,2,2};
new BubbleSort().sort(a); 
int d=1; 
List list=new ArrayList<Obj>();
for (int i = 0; i < a.length; i=i+d) {
d=BubbleSort.frequency(a,a[i]); 
Obj oo=new Obj(d,a[i]);
list.add(oo);

 
Collections.sort(list,new Comparator<Obj>(){ 
public int compare(Obj o1, Obj o2) { 
return o2.a-o1.a;
}});
 
for (Iterator iterator = list.iterator(); iterator.hasNext();) {
Obj object = (Obj) iterator.next();
for (int i = 0; i <object.a; i++) {
System.out.print(object.b+"   ");
}
}
 
}
}

java? ActionScript
[解决办法]
上面的判断写错了,更正一下


/**
 * 集合,先按照value数量,再按照value值大小排序
 * 1,1,1,9,9,3,3,5,5,5,5,7,2,2,2  ->
 * 5,5,5,5,2,2,2,1,1,1,9,9,3,3,7
 */

package com.zyc.test;

import java.util.Arrays;
import java.util.HashMap;

public class Test6 {
//待排序数组,打乱顺序
static int[] sourceArr = new int[] {1, 9, 5, 9, 1, 3, 2, 5, 7, 3, 5, 1, 2,
2, 5 };

// 先按数量从多到少排序,再按value从大到小排序
static void sort(int[] arr) {
//获取每个数字出现的次数
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
for (int i : arr) {
if(!map.containsKey(i)) map.put(i, 1);
else map.put(i, map.get(i) + 1);
}
//获取value数组
Integer[] valueArr = new Integer[map.size()];
map.keySet().toArray(valueArr);
//先按照value数量,再按照value值大小给value数组排序
for(int i = 0;i < valueArr.length;++i) {
for(int j = i + 1;j < valueArr.length;++j) {
if(map.get(valueArr[j]) > map.get(valueArr[i])  
[解决办法]
 
(map.get(valueArr[j]) == map.get(valueArr[i]) && valueArr[j] > valueArr[i])) {
int temp = valueArr[i];
valueArr[i] = valueArr[j];
valueArr[j] = temp;
}
}
}
//根据value数组重新设置源数组的值
int index = 0;
for (int i = 0;i < valueArr.length;++i) {
for(int j = 0;j < map.get(valueArr[i]);++j) {
arr[index++] = valueArr[i];
}
}
}

public static void main(String[] args) {
sort(sourceArr);
System.out.println(Arrays.toString(sourceArr));
}
}

热点排行