字符串
str = 
"ZM01(1001:BQSJ, F01)-ZM01(1001:BQLJ, F02)-ZM01(1001:14BQSJ, F03)
-ZM02(1002:BQSJ, B01)-ZM02(1002:BQLJ, B02)-ZM02(1002:14BQSJ, B03)"转换结果:例如map_1 = {ZM01, map_2}map_2 = {F01, 1001:BQSJ}..................最终返回map_1,要求不能重复;求高手,接代码!

解决方案 »

  1.   

    表示这个逻辑真心看不懂
    不过能感觉到大体上的意思。
    用contains或者split()进行分割字符串,然后添加到一个map里面,key值和value相对应。。最后获取或者描述的再详细点吧。
      

  2.   

    我的意思就是
    str转换为HashMap , map_1关系是ZM01, ZM02做为Key,而Value则是HashMap(map_2), map_2的关系是F01, F02, F03, B01, B02, B03作为Key, 对应的Value值则是
    1001:BQSJ, 1001:BQLJ, 1001:14BQSJ, F03, 1002:BQSJ..................
    总之就是最终的一个HashMap,Key:ZM01 Value:HashMap(key:F01,F02,F03;value:1001:BQSJ,1001:BQLJ,1001:14BQSJ)Key:ZM02 Value:HashMap(key:B01,B02,B03; value:..............)
    不知道这样,能否理解?
      

  3.   


    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class Test {
    public static void main(String[] args) {

    Map<String,Map<List<String>,List<String>>> map1 = new HashMap<String, Map<List<String>,List<String>>>();

    String str = "ZM01(1001:BQSJ, F01)-ZM01(1001:BQLJ, F02)-ZM01(1001:14BQSJ, F03)-ZM02(1002:BQSJ, B01)-ZM02(1002:BQLJ, B02)-ZM02(1002:14BQSJ, B03)";
    String[] des = str.split("-");
    String regex = "(ZM\\d{2})\\((.*), (\\w+)\\)";

    for (int i = 0; i < des.length; i++) {
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(des[i]);
    if (matcher.find()) {
    String str1 = matcher.group(1);
    String str2 = matcher.group(2);
    String str3 = matcher.group(3);

    if(!map1.containsKey(str1)){
    Map<List<String>,List<String>> nameMap = new HashMap<List<String>,List<String>>();
    List<String> strList1 = new ArrayList<String>();
    strList1.add(str2);
    List<String> strList2 = new ArrayList<String>();
    strList2.add(str3);
    nameMap.put(strList2,strList1);
    map1.put(str1, nameMap);
    }else{
    Iterator<List<String>> iteratorKey = map1.get(str1).keySet().iterator();
    while(iteratorKey.hasNext())
    iteratorKey.next().add(str3);
    Iterator<List<String>> iteratorValue = map1.get(str1).values().iterator();
    while(iteratorValue.hasNext())
    iteratorValue.next().add(str2);
    }

    }
    }

    System.out.println("输出结果:"+map1);
    }
    }
    楼主看看是不是要这个效果?
    希望楼下能抛砖引玉。
      

  4.   

    把 Pattern pattern = Pattern.compile(regex); 拿到循环外面。