1.map:{项目数,25}——>map{name:‘项目数’, value: 25}
/**
*
* 将map中的key-value转成饼图中{name:key,value:value}的形式
*
* @作者: zktian
* @参数: list
* @返回值: List<Map<String, Object>>
*
* @修改记录(修改时间、作者、原因):
*/
public static List<Map<String, Object>> ListToPielist(List<Map<String, Object>> list){
List<Map<String, Object>> newlist = new ArrayList<>();
for (int i=0;i<list.size();i++){
Map<String, Object> oldmap = list.get(i);
Map<String, Object> newmap = new HashMap<>();
for (String key:oldmap.keySet()){
newmap.put("name",key);
newmap.put("value",oldmap.get(key));
}
newlist.add(newmap);
}
return newlist;
}
2.map{1,25}——map{name: 学生, value: 25}
/**
*
* 根据常量类的map将查询出来的数字标识转换成字符表达,并组合成饼图需要的格式
*
* @作者: zktain
* @参数: list
* @参数: Constantmap{数字标识,标识含义}
* @返回值: List<Map<String, Object>>
*
* @修改记录(修改时间、作者、原因):
*/
public static List<Map<String, Object>> ListToPielist(List<Map<String, Object>> list,Map Constantmap){
Map<String, Object> newConstantmap = new HashMap<>();
newConstantmap.putAll(Constantmap);
List<Map<String, Object>> newlist = new ArrayList<>();
for (Map map:list){
Map<String, Object> newmap = new HashMap<>();
Object djfs = map.get("name");
//使用迭代器遍历
for(Iterator<Map.Entry<String, Object>> iterator = newConstantmap.entrySet().iterator();iterator.hasNext();){
Map.Entry<String, Object> item = iterator.next();
if (djfs.toString() == String.valueOf(item.getKey()) || djfs.toString().equals(String.valueOf(item.getKey()))){
newmap.put("name",item.getValue());
newmap.put("value",map.get("value"));
newlist.add(newmap);
//删除已使用的指标
iterator.remove();
}
}
}
//剩余的指标补全
for (Object key:newConstantmap.keySet()){
Map<String, Object> newmap = new HashMap<>();
newmap.put("name",newConstantmap.get(key));
newmap.put("value",0);
newlist.add(newmap);
}
return newlist;
}
3.测试
3.1第一个方法
数据库查询的数据如下图:
使用第一个方法转换后的数据格式如下图:
效果如下图:
3.2第二个方法
数据库查询结果如下图:
参数Constantsmap的格式:
{0=经济类, 1=技术类, 2=无, 9=其他}
使用第二个方法转化后数据格式如下图:
效果如下图: