日期:2014-05-17 浏览次数:20807 次
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));