有这样一个类 
public class City implements java.io.Serializable{    private String provienceName; //省名,如果是直辖市,则省名与城市名相同.
    private String cityName;      //城市名,如果是直辖市,则同省名.
    private int count;            //该城市所包含门店的数量   City(String provienceName,String cityName,int count){
        this.provienceName=provienceName;
        this.cityName =cityName;
        this.count=count;
    }
City(String cityName,int count){
        this.cityName =cityName;
        this.count=count;
    }...
}查询数据库后得到这个类的数组
cityArray 我把这个数组放入一个hashMap里了
元素类似这样
city1("北京","北京",12)
city2("上海","上海",6)
city3("广东","广州",2)
city4("广东","中山",1)
city5("广西","南昌",1)
city5("广西","桂林",1)
现在我要把这个集合处理一下,格式变成:city1("北京",12)
city2("上海",6)
city3("广东",3)//把省独立一个对象 并且数量为该省所有市的数量和
city4("广州",2)
city5("中山",1)city6("广西",2)//把省独立一个对象 并且数量为该省所有市的数量和
city7("南昌",1)
city8("桂林",1)有什么好办法呢?效率要比较高的,谢谢各位了!

解决方案 »

  1.   

    先把所有的城市的弄出来,这个应该简单.
    主要是怎么求出省的.
    你可以把一个省的放进新的map里,用省名为key
    每次放进去的时候检查一次,如果有这个key就取出它,然后增加count
    没有就创建一个放进去
      

  2.   

    你为什么不在从DB中取数据的时候就直接算好呢?那样应该是最快的吧。
    反而到取出来之后再算?
    至于取出来之后的算法,我的理解是跟K3179相同的,自己定义一个省及直辖市的map,然后再列举三维数组的元素,进行求和。