假如有如下二维表:----------------------------------
  时间     |    姓名    |  花销 
----------------------------------
2006-07-06 |    张三    |  1000
----------------------------------
2006-07-06 |    李四    |  1500
----------------------------------
2006-07-07 |    张三    |  100
----------------------------------
2006-07-07 |    李四    |  200
----------------------------------
2006-07-08 |    张三    |  100
----------------------------------目标:得到分类统计结果。1.请问我该如何得到按天计算的花销的统计结果?以及如何得到每人各自的花销?2.如果现在已经得到ArrayList -- time, name, outgoing, 它们包含元素的情况如下
  time: 2006-07-06, 2006-07-06, 2006-07-07, 2006-07-07, 2006-07-08
  name: 张三,李四,张三,李四,张三
  outgoing: 1000, 1500, 100, 200, 100
 请问如何得到每人各自的花销?3.如果现在已经得到ArrayList -- time, name, outgoing, 它们包含元素的情况如下
  time: 时间,2006-07-06, 2006-07-06, 2006-07-07, 2006-07-07, 2006-07-08
  name: 姓名,张三,李四,张三,李四,张三
  outgoing: 开销,1000, 1500, 100, 200, 100
 请问如何得到每人各自的花销?注:请解决以上三个问题中的任意一个。分不是问题!

解决方案 »

  1.   

    一、public static void main(String[] args) {
            String[][] table = {
                {"2006-07-06", "张三", "1000"},
                {"2006-07-06", "李四", "1500"},
                {"2006-07-07", "张三", "100"},
                {"2006-07-07", "李四", "200"},
                {"2006-07-08", "张三", "100"}
            };
            HashMap hs1 = new HashMap();
            HashMap hs2 = new HashMap();
            for (int i=0;i<table.length;i++){
                String key = table[i][0];
                Object obj = hs1.get(key);
                if (obj==null){
                    hs1.put(key,Integer.parseInt(table[i][2]));
                }else {
                    int v = (Integer)obj;
                    v = v + Integer.parseInt(table[i][2]);
                    hs1.put(key,v);
                }
                
                key = table[i][1];
                obj = hs2.get(key);
                if (obj==null){
                    hs2.put(key,Integer.parseInt(table[i][2]));
                }else {
                    int v = (Integer)obj;
                    v = v + Integer.parseInt(table[i][2]);
                    hs2.put(key,v);
                }
            }
            Iterator it = hs1.keySet().iterator();
            while (it.hasNext()){
                String k = (String)it.next();
                int v = (Integer)hs1.get(k);
                System.out.println(k + "   " + v);
            }
            it = hs2.keySet().iterator();
            while (it.hasNext()){
                String k = (String)it.next();
                int v = (Integer)hs2.get(k);
                System.out.println(k + "   " + v);
            }
        }
      

  2.   

    第二种和第三种情况并不能保证是一一对应的,即便是,这样也不合理最好的方法是映射成实体bean,将实体bean作为一个元素放入ArrayList中
      

  3.   

    用面向对象的方法,支持kevinliuu(@。@)