hashmap嵌套hashmap循环生成二维数组

该博客介绍了一个将HashMap嵌套HashMap的数据结构转换为二维数组的方法。首先定义二维数组大小,然后通过循环遍历两个指导数组,查找HashMap中对应的键值对,并填充到二维数组中。最终目标是将转换后的二维数组转化为JSONArray并返回。

hashmap嵌套hashmap如何把数据合成一个二维数组
思路是定义一个二维数组的行和列(行和列的大小是根据两个两个数组来的,两个数组分别是第一行和第一列),通过循环这两个二维数组,取二维数组的值去判断hashmap里是否有这个类型的值,然后对应二维数组的行和列进行一一插入。然后
map的值{{
10={其它=10224.1:1938, 农业生产用电=7615.75:7229, 合计=228420.98:67681, 商业=31612.89:5301, 大工业=82265.52:5730, 居民生活用电=29972.67:10090, 贫困县农业排灌=305.62:1084, 趸售=5147.88:3, 非居民照明=24163.25:8013, 非普工业=37113.31:28293},
110={其它=52.54:5, 合计=127151.96:134, 大工业=95096.25:109, 居民生活用电=142.69:1, 趸售=28729.38:6, 非居民照明=2851.81:5, 非普工业=279.3:8}, 20={合计=0.08:1, 居民生活用电=0.08:1},
220={其它=154.22:2, 合计=131118.31:56, 商业=0.12:1, 大工业=130145.14:50, 居民生活用电=0.07:1, 非居民照明=816.64:1, 非普工业=2.11:1},
35={其它=5849.96:30, 农业生产用电=67.18:8, 合计=71083.84:532, 商业=20.81:4, 大工业=41220.6:300, 居民生活用电=1906.87:42, 贫困县农业排灌=26.08:9, 趸售=20773.85:7, 非居民照明=372.42:81, 非普工业=846.07:51}}}
pricenamenew数组的值 [大工业, 非居民照明, 非普工业, 商业, 居民生活用电, 农业生产用电, 贫困县农业排灌, 趸售, 其它, 合计]
powerlevel数组的值[10kV, 20kV, 35kV, 66kV, 110kV, 220kV, 330kV, 500kV]
将生成的二位数组转换成jsonarray
public void returnData(Map<String, Map<String, String>> map,HttpServletResponse res){
try {
Object[][] obj= new Object[pricenamenew.length+1][powerlevel.length*2+1];//初始化二维数组的大小
for(int i=0;i<pricenamenew.length+1;i++){
int a=1;
int b=1;
int f=0;
for(int j=0;j<powerlevel.length+1;j++){
obj[0][0]=" “;
if(i0 && j>0){
obj[0][a]=powerlevel[j-1]+“电量”;
obj[0][a+1]=powerlevel[j-1]+“用户”;
a=a+2;
}else if(i!=0 && j
0){
obj[i][j]=pricenamenew[i-1];
}else if (i!=0 && j!=0 ) {
String ydl=“0”;
String dyhsj=“0”;
if(map.get(powerlevel[f].replace(“kV”,”"))!=null){
Map<String, String> mapkv=map.get(powerlevel[f].replace(“kV”, “”));
if(mapkv.get(pricenamenew[i-1])!=null){
ydl=map.get(powerlevel[f].replace(“kV”,"")).get(pricenamenew[i-1]).split("?[0];
dyhsj=map.get(powerlevel[f].replace(“kV”,"")).get(pricenamenew[i-1]).split("?[1];
}else{
ydl=“0”;
dyhsj=“0”;
}
}else{
ydl=“0”;
dyhsj=“0”;
}
obj[i][b]=ydl;
obj[i][b+1]=dyhsj;
b=b+2;
f=f+1;
}
}
}
JSONArray jsonCounts = JSONArray.fromObject(obj);
res.setCharacterEncoding(“UTF-8”);
PrintWriter out =res.getWriter();
out.println(jsonCounts);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
log.error(“CustomersElectricityStatisticalHelper.process() 方法处理请求失败, 错误信息:” + e.getStackTrace());
}
}
建议!在生成的过程画出要生成二维数组的样式,然后对其进行调试

幸福里小区第8栋楼马上就要建成出售,已知8栋共计6层楼,每层的户型设计都是两梯四户。现在包工头给了业务员小张一个任务:给8栋每层的每套住宅贴上门牌号。门牌号的设计规则是:楼层+序号。例如:6楼的从东到西四户的门牌号分别为: 601,602,603,604。 请设计程序帮助小张完成上述需求,并将生成好的门牌号存入二维数组,并将数组元素遍历打印到控制台,要求每层的门牌号打印到同一行,用空格隔开,效果如下: 训练目标能够使用循环嵌套遍历二维数组,并给每个二维数组的一维数组的每个元素进行赋值。训练提示1、一层有4户,一栋楼共计6层,考虑使用二维数组 2、每层的每户都要贴门牌号,考虑使用嵌套循环遍历二维数组 3、门牌号如果用数字表示的话,可以采用 楼层数 * 100 + 每户序号的方式生成参考方案使用嵌套循环遍历二维数组完成操作步骤1、定义一个int类型的二维数组并动态初始化,用来管理整栋楼的所有楼层和住宅,6层,每层4户。 2、使用for循环遍历二维数组,得到二维数组中的每个一维数组,一维数组对应的就是楼层 3、嵌套for循环遍历一维数组,得到每层的所有住宅 4、再嵌套循环内部生成门牌号,生成规则:门牌号 = 楼层数 * 100 +当前住宅在这层楼的序号 4.1、将生成的门牌号赋值给一维数组的对应索引位置 4.2、将门牌号拼接空字符串输出打印,这里只输出不换行 5、在外层for循环中输出换行
最新发布
04-10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值