日期:2014-05-17 浏览次数:20966 次
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
public class Test20 {
    public static void main(String[] args) {
        int[] old = {1,2,1,3,3,2,9,8,9,};
        Map<Integer, Integer> map = new HashMap<Integer, Integer>();
        for(int i=0; i<old.length; i++){
            if(map.containsKey(old[i])){
                map.put(old[i], map.get(old[i])+old[i]);
            }else{
                map.put(old[i], old[i]);
            }
        }
        Collection<Integer> coll = map.values();
        Integer[] newInt = new Integer[map.size()];
        coll.toArray(newInt);
        for(Integer i : newInt){
            System.out.println(i);
        }
        
    }
}
------解决方案--------------------
楼上用MAP 是可以的
但如果 仅仅是  int行的数组的话  并且 知道数组中数字的为数
拿数组中数字确定是1为数来说
创建一个 长度是 10的 数组  int[] newArray ;
然后  newArray [oldArray[i]] += oldArray[i]
最后 调整  newArray  到你要的结果数组
------解决方案--------------------
for example
int[] oldArray = {1,2,1,3,3,2,9,8,9};
Map<Integer, Integer> map = new LinkedHashMap<Integer, Integer>();
for (int i : oldArray) {
    if (map.containsKey(i)) {
        map.put(i, map.get(i)+1);
    } else {
        map.put(i, 1);
    }
}
int[] newArray = new int[map.size()];
int idx = 0;
for (Map.Entry<Integer, Integer> e : map.entrySet()) {
    newArray[idx++] = e.getKey() * e.getValue();
}
System.out.println(Arrays.toString(newArray));