{seqno=0, amt=1000, id=BOCC, date=20101010}
{seqno=1, amt=1000, id=RRRR, date=20101010}
{seqno=2, amt=1000, id=BOCC, date=20101009}
{seqno=3, amt=1000, id=BOCC, date=20101008}
{seqno=4, amt=1000, id=RRRR, date=20101013}
{seqno=5, amt=2000, id=RRRR, date=20101013}
.......
........需求:
整体 为一个vector
每行为一个map按id来分组,相同id中取日期最小的金额
求加和
有什么好的办法吗?我的解法:
循环整个vector,distinct(id),
再循环id,内循环整个Vector,取出各个相同的id分组多个Vector,
再单独循环每一个vector取出各组中日期最小的...
很麻烦...请大家帮忙看有没有简单点的,或能用到arrays.sort(),collections....谢谢

解决方案 »

  1.   

    如果只是要求加和你循环一次不就好了嘛?
    你先建两个HashMap,
    HashMap<String,String> moneyMap;
    HashMap<String,String> dateMap;
    dateMap里面存<ID,date>
    moneyMap里面存<ID,amt>比如你第一条数据
    {seqno=0, amt=1000, id=BOCC, date=20101010}
    dateMap.put(BOCC,20101010);
    moneyMap.put(BOCC,1000);第二条数据
    {seqno=1, amt=1000, id=RRRR, date=20101010}
    先在dateMap里get(RRRR),如果返回null,直接
    dateMap.put(RRRR,20101010);
    moneyMap.put(RRRR,1000);
    如果返回非null,则比较返回值dateMap.get(RRRR)和date=20101010的大小
    如果date的值比原来dateMap中对应的值小
    则替换之
    dateMap.put(RRRR,20101010);
    moneyMap.put(RRRR,1000);
    否则,不替换第三条数据
    ……
    依次处理处理完了后,把moneyMap中的值加起来就是你要的结果