从前台接收到一个ArrayList>

qq_37825730 2017-09-01 11:42:02
从前台接收到一个ArrayList<Map<String, Object>> 值为[{CODE=001, CONTENT=01,02, ROWNUMBER=1}]

我想把它变成[{CODE=001, CONTENT=01, ROWNUMBER=1},{CODE=001, CONTENT=02, ROWNUMBER=1}]的放在一个
List<Map<String, Object>>里面返回去,请问我该怎么做
...全文
302 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_37825730 2017-09-04
  • 打赏
  • 举报
回复
谢谢各位大神们,我也自己东拼西凑出来了。拿出来大家一起分享,你们好厉害!
		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;
				}
				
			}
lifewell1 2017-09-01
  • 打赏
  • 举报
回复
先把值取出来 判断CONTENT是否有多个 有多个则拆分 迭代成多个map 在把map塞到新的list里面 如果没有多个直接塞
Freefish1994 2017-09-01
  • 打赏
  • 举报
回复
引用 2 楼 qq_28469039 的回复:

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为固定
这个总得要有一个固定的值来判断吧。。如果前台这几个字段都不固定的话,那就只能根据字段的顺序了,比如对第二个字段进行处理等等。。
qq_28469039 2017-09-01
  • 打赏
  • 举报
回复

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为固定
Freefish1994 2017-09-01
  • 打赏
  • 举报
回复
写了一个相对比较通用的方法,这个方法不用限制content这个值里面的个数 不过感觉写得有点儿复杂,也许有更好的实现方法,楼主可以看一下

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;
	}
}

50,541

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧