50,541
社区成员
发帖
与我相关
我的任务
分享
List<Map<String, Object>> rtnData=new ArrayList<Map<String, Object>>();
for(Map<String, Object> map: data){
String str1 = (String) map.get("CODE");//001
String str2 = (String) map.get("CONTENT");//01,02
int m = Integer.parseInt(str1);
if(str2.indexOf(",")!=-1){
List<String> result = Arrays.asList(str2.split(","));
for(int i =0;i<result.size();i++){
Map<String, Object> mp=new HashMap<String,Object>();
String str = String.format("%03d", m);
m++;
mp.put("CODE", str);
mp.put("CONTENT", result.get(i));
mp.put("ROWNUMBER", 1+i);
rtnData.add(i, mp);
}
}else{
return data;
}
}
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class test {
public static List<Map<String, Object>> get() {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> map1 = new LinkedHashMap<String, Object>();
Map<String, Object> map2 = new LinkedHashMap<String, Object>();
map1.put("CODE", "001");
map1.put("CONTENT", "01,02");
map1.put("ROWNUMBER", "1");
list.add(map1);
return list;
}
public static List<Map<String, Object>> result(){
List<Map<String, Object>> list = get();//初始化List数据
List<Map<String, Object>> listResult = new ArrayList<Map<String, Object>>();
for(Map<String, Object> map : list){
Object obj = map.get("CONTENT");
String str = obj.toString();
String[] newList = str.split(",");
for(String s : newList){
Map<String, Object> map1 = new LinkedHashMap<String, Object>();
map1.put("CODE",map.get("CODE"));
map1.put("CONTENT", s);
map1.put("ROWNUMBER", map.get("ROWNUMBER"));
listResult.add(map1);
}
}
return listResult;
}
public static void main(String[] args) {
System.out.println(result());
}
}
前提map集合的key为固定
public class Test {
/*
* 测试数据:原始List
* {CODE=001, CONTENT=01,02,03, ROWNUMBER=1}
* {CODE=002, CONTENT=03,04, ROWNUMBER=2}
* 输出数据:newList
* {CONTENT=01, ROWNUMBER=1, CODE=001}
* {CONTENT=02, ROWNUMBER=1, CODE=001}
* {CONTENT=03, ROWNUMBER=1, CODE=001}
* {CONTENT=03, ROWNUMBER=2, CODE=002}
* {CONTENT=04, ROWNUMBER=2, CODE=002}
* @param args
*/
public static void main(String args[]) {
List<Map<String, Object>> list = getList();
List<Map<String, Object>> newList = getResult(list);
for (Map<String, Object> entity : list)
System.out.println(entity);
for (Map<String, Object> entity : newList)
System.out.println(entity);
}
public static List<Map<String, Object>> getResult(
List<Map<String, Object>> list) {
List<Map<String, Object>> newList = new ArrayList<Map<String, Object>>();
int count = 0;
Map<String, Object>[] maps = null;
for (Map<String, Object> map : list) {
for (Map.Entry<String, Object> entry : map.entrySet()) {
if ("CONTENT".equals(entry.getKey())) {
String contents = (String) entry.getValue();
count = contents.split(",").length;
maps = new Map[count];
break;
}
}
for(int i = 0; i < count; i++){
maps[i] = new HashMap<String ,Object>();
}
for (Map.Entry<String, Object> entry : map.entrySet()) {
if (!"CONTENT".equals(entry.getKey())) {
for(int i = 0; i < maps.length; i++){
maps[i].put(entry.getKey(), entry.getValue());
}
} else {
for (int i = 0; i < maps.length; i++) {
String contents = (String) entry.getValue();
String[] countentArray = contents.split(",");
maps[i].put(entry.getKey(), countentArray[i]);
}
}
}
for (int i = 0; i < maps.length; i++) {
newList.add(maps[i]);
}
}
return newList;
}
/**
* 构造初始的List数据
* @return
*/
public static List<Map<String, Object>> getList() {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> map1 = new LinkedHashMap<String, Object>();
Map<String, Object> map2 = new LinkedHashMap<String, Object>();
map1.put("CODE", "001");
map1.put("CONTENT", "01,02,03");
map1.put("ROWNUMBER", "1");
map2.put("CODE", "002");
map2.put("CONTENT", "03,04");
map2.put("ROWNUMBER", "2");
list.add(map1);
list.add(map2);
return list;
}
}