假设有一个二维数组,就2个column A和BA   B
-------
a   0
a   1
b   2
c   4
a   3
b   1
c   1
---------------现在需要得到的结果是
A   B
-------
a   4
b   3
c   5
---------------
即需要把所有的值根据A列相加,求算法

解决方案 »

  1.   

    不是很明白,数组的结构是怎样的,比如说:arr[0][0]、arr[0][1]等等各存的是什么?
      

  2.   

    for example
    String[][] src = {
        {"a","0"}, 
        {"a","1"}, 
        {"b","2"}, 
        {"c","4"}, 
        {"a","3"}, 
        {"b","1"}, 
        {"c","1"}
    }; Map map = new HashMap();
    String tmp;
    for (int i=0; i<src.length; i++) {
        tmp = map.get(src[0]);
        if (tmp == null) {
            map.put(src[0], src[1]);
            continue;
        }
        tmp = String.valueOf(Integer.parseInt(tmp).intValue() + Integer.parseInt(src[1]).intValue());
        map.put(src[0], tmp);
    }String[][] result = new String[map.size()][2];
    Iterator it = map.entrySet().iterator();
    int index = 0;
    while (it.hasNext()) {
        Map.Entry entry = (Map.Entry)it.next();
        result[index][0] = entry.getKey();
        result[index++][1] = entry.getValue();
        System.out.println(entry.getKey() + "\t" + entry.getValue());
    }
      

  3.   

    阿宝的代码只有一点点小问题
    把那个src[X]替换成src[i][X]就OK了~
      

  4.   

    ....晕..不能运行啊.......tmp = map.get(src[0]);Object不能赋值给String啊....
    result[index][0] = entry.getKey();
    也一样....
    难道是jre版本的问题?  我是1.5的.........
    不过原理我懂了.....
      

  5.   

    加(String)强制转换就好了啊或者声明Map的时候加描述
    Map<String,String> map = new HashMap<String,String>();就可以了
      

  6.   

    把qybao的代码改了一下:import java.util.LinkedHashMap;
    import java.util.Map;public class Test {
        public static void main(String[] args) {
            String[][] src = {
                    {"a","0"}, 
                    {"a","1"}, 
                    {"b","2"}, 
                    {"c","4"}, 
                    {"a","3"}, 
                    {"b","1"}, 
                    {"c","1"}
                };        // 用 LinkedHashMap 可以保证迭代的先后顺序
            Map<String, Integer> map = new LinkedHashMap<String, Integer>();
            for (int i = 0; i < src.length; i++) {
                String key = src[i][0];
                Integer tmp = map.get(key);
                if(tmp == null) {
                    tmp = 0;
                }
                map.put(key, tmp + Integer.parseInt(src[i][1]));
            }
            
            // 输出
             for(Map.Entry<String, Integer> entry : map.entrySet()) {
                System.out.println(entry.getKey() + " --> " + entry.getValue());
            }
        }
    }
      

  7.   

    用HashMap 存放记录 就可以了啊
      

  8.   

    解决了解决了...谢谢各位大大///让我学了不少啊.....哈哈...以后要多去研究一下Map和Set接口了...可以解决N多问题...
      

  9.   

    import java.lang.Character.*;
    import java.lang.Integer.*;
    import java.lang.String.*;public class array
    {
    String[][] b=new String[2][5];
    String[][] a={{"a","b","a","b","c","a"},{"1","4","9","0","3","4"}};
    public array()
    {
    } public static void main(String[] args)
    {
    array aa=new array();
    for(int i=0;i<=5;i++)
    {
    for(int j=0;j<=4;j++)
    {
    if(aa.b[0][j] == null)
    {
    aa.b[0][j]=aa.a[0][i];
    aa.b[1][j]=aa.a[1][i];
    break;
    }
    else if(aa.b[0][j] == aa.a[0][i])
    {
    int c = Integer.parseInt(aa.a[1][i]) + Integer.parseInt(aa.b[1][j]);
    aa.b[1][j] = String.valueOf(c);
    break;
    }
    }
    }

    for(int i=0;i<=1;i++)
    {
    for(int j=0;j<=4;j++)
    {
    System.out.println(aa.b[i][j]);
    }
    }
    }
    }