如何对List对象内的内容进行分组,分组后转为Map方便操作

问题遇到的现象和发生背景

关于对List求得分组的问题,如何对List对象内的内容进行分组,分组后转为Map方便操作

问题相关

大概数据结构是这样的
数据行:
第一行:行号10,存货001,MS行号01;
第二行:行号10,存货001,MS行号02;
第三行:行号10,存货001,MS行号03;
第四行:行号20,存货002,MS行号04;
第五行:行号30,存货003,MS行号05;
第六行:行号30,存货003,MS行号06;
第七行:行号40,存货004,MS行号07;

模拟对象代码,暂时用map代替了:

List<Map<String,String>> list = new ArrayList<>();
        Map<String,String> map1 = new HashMap<>();
        map1.put("lineNo", "10");
        map1.put("suid", "001");
        map1.put("ms", "01");
        list.add(map1);
        Map<String,String> map2= new HashMap<>();
        map2.put("lineNo", "10");
        map2.put("suid", "001");
        map2.put("ms", "02");
        list.add(map2);
        Map<String,String> map3= new HashMap<>();
        map3.put("lineNo", "10");
        map3.put("suid", "001");
        map3.put("ms", "03");
        list.add(map3);
        Map<String,String> map4= new HashMap<>();
        map4.put("lineNo", "20");
        map4.put("suid", "002");
        map4.put("ms", "04");
        list.add(map4);
        Map<String,String> map5= new HashMap<>();
        map5.put("lineNo", "30");
        map5.put("suid", "003");
        map5.put("ms", "05");
        list.add(map5);
        Map<String,String> map6= new HashMap<>();
        map6.put("lineNo", "30");
        map6.put("suid", "003");
        map6.put("ms", "06");
        list.add(map6);
        Map<String,String> map7= new HashMap<>();
        map7.put("lineNo", "40");
        map7.put("suid", "004");
        map7.put("ms", "07");
        list.add(map7);

我的解答思路和尝试过的方法

由于客户环境是JDK1.7的,我想不到好的解决办法,希望帮个忙解答一下。

我想要达到的结果

我希望将以上数据行分组后转为以下结构,方便我对分组后的内容进行操作。

Map<行号+存货,List<数据行>> map = new HashMap<String , List<数据行>>();
Map<String, List<Map<String,String>>> map = new HashMap<>();

jdk1.7的话,那遍历判断,创建map节点就行了。

import java.util.*;
public class Test {
    public static void main(String[] args) {
        Map<String, List<Map<String,String>>> map = new HashMap<>();
        List<Map<String,String>> list = new ArrayList<>();
        Map<String,String> map1 = new HashMap<>();
        map1.put("lineNo", "10");
        map1.put("suid", "001");
        map1.put("ms", "01");
        list.add(map1);
        Map<String,String> map2= new HashMap<>();
        map2.put("lineNo", "10");
        map2.put("suid", "001");
        map2.put("ms", "02");
        list.add(map2);
        Map<String,String> map3= new HashMap<>();
        map3.put("lineNo", "10");
        map3.put("suid", "001");
        map3.put("ms", "03");
        list.add(map3);
        Map<String,String> map4= new HashMap<>();
        map4.put("lineNo", "20");
        map4.put("suid", "002");
        map4.put("ms", "04");
        list.add(map4);
        Map<String,String> map5= new HashMap<>();
        map5.put("lineNo", "30");
        map5.put("suid", "003");
        map5.put("ms", "05");
        list.add(map5);
        Map<String,String> map6= new HashMap<>();
        map6.put("lineNo", "30");
        map6.put("suid", "003");
        map6.put("ms", "06");
        list.add(map6);
        Map<String,String> map7= new HashMap<>();
        map7.put("lineNo", "40");
        map7.put("suid", "004");
        map7.put("ms", "07");
        list.add(map7);

        for(Map<String,String> m:list){
            String key=m.get("lineNo")+m.get("suid");
            if (map.containsKey(key)){
                map.get(key).add(m);
            }else{
                List<Map<String, String>> mp=new ArrayList<>();
                mp.add(m);
                map.put(key,mp);
            }
        }
        System.out.println(map);
    }
}

public static void main (String [] args) {
    Map<String, List<Map<String,String>>> map = new HashMap<>();
        for(Map<String,String> m : list) {
            String str = m.get("lineNo") + m.get("suid");
            if(map.containsKey(str)) {
                map.get(str).add(m);
            } else {
                List<Map<String,String>> tmpList = new ArrayList<>();
                tmpList.add(m);
                map.put(str, tmpList);
            }
        }
}

定义一个class就行了呀