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

java菜鸟
有这样一堆数据输入
2,1
1,3
3,2
2,3
3,1
2,3
4,3
7,2
3,1

输出:
1,2
2,2
3,3

就是说输入数据第二列为1时,对应2 3 3 有两个数字2和3
第二列为2时,对应3 7 两个
第二列为3时,对应1 2 2 4 三个

这个算法怎么写啊 求解

------解决方案--------------------
最笨的方法,遍历一下
------解决方案--------------------
Java code

import java.util.HashSet;
import java.util.TreeMap;


public class Test {

    public static void main(String[] args) {
        int[] arr1 = new int[]{2,1,3,2,3,2,4,7,3};
        int[] arr2 = new int[]{1,3,2,3,1,3,3,2,1};
        TreeMap<Integer, HashSet<Integer>> map = new TreeMap<Integer, HashSet<Integer>>();
        HashSet<Integer> set = new HashSet<Integer>();
        for(int i = 0;i < arr2.length;i++){
            set = new HashSet<Integer>();
            if(map.containsKey((Integer)arr2[i])){
                set = map.get((Integer)arr2[i]);
                set.add(arr1[i]);
                map.put(arr2[i], set);
            }else {
                set.add(arr1[i]);
                map.put(arr2[i], set);
            }
        }
        Integer[] keyArr = new Integer[map.size()];
        map.keySet().toArray(keyArr);
        for(int i = 0;i < map.size();i++){
            System.out.println(keyArr[i] + "," + map.get(keyArr[i]).size());
        }
    }

}