需求:
 List  list="tc1,tc2,tc3,bo1,bi1,bo2,bo3,bi2,bi3,cg1,cg2,cg3,b1n,b2n,b3n" (此数据只是一部分)
我要把上面 list里的字符串分别把字母相同的放入Map里 
如  
map1      map1(1,tc1);
          map1(2,tc2);
          map1(3,tc3);map2      map2(1,bo1);
          map2(2,bo2);
          map2(3,bo3);map3      map3(1,bi1);
          map3(2,bi2);
          map3(3,bi3);map4      map4(1,cg1);
          map4(2,cg2);
          map4(3,cg3);map5      map5(1,b1n);
          map5(2,b2n);
          map5(3,b3n);map1到map5需要用循环来处理因为List里面的字符串只是一少部份,需要详细代码

解决方案 »

  1.   

    ???? 朋友 你可能弄错了  我是要把这些数据放到map里面,map里的 key 用字母里的数字来代替
      

  2.   

    咦,我上次的代码简单改一下就可以啊,
    你应该自己稍微动动脑筋的。import java.util.ArrayList;
    import java.util.Collection;
    import java.util.HashMap;
    import java.util.Hashtable;
    import java.util.List;
    import java.util.Map;
    public class SameChars { public static void main(String[] args){
    String list="tc1,tc2,tc4,bo5,bi9,bo1,bi8,cg1,cg3,cg5,b2n,b3n,b4n,cg4,cg8";
    String[] items=list.split(",");
    Hashtable<String,StringBuffer> result=new Hashtable<String,StringBuffer>();
    for(int i=0; i<items.length;i++){
    String curStr=items[i];
    String curStrNoNum=curStr.replaceAll("\\d*", "");
    if (result.containsKey(curStrNoNum)){
    StringBuffer sb=result.get(curStrNoNum);
    sb.append(",");
    sb.append(curStr);
    }else{
    StringBuffer sb=new StringBuffer(curStr);
    result.put(curStrNoNum, sb);
    }
    }

    Collection<StringBuffer> whatYouWant=result.values();
    List<Map> maps=new ArrayList<Map>();
    for(StringBuffer sb:whatYouWant){
    String[] segs=sb.toString().split(",");
    Map m=new HashMap();
    for(int i=1; i<=segs.length;i++){
    m.put(i, segs[i-1]);
    }
    System.out.println(m);
    }
    }
    }
      

  3.   

    明白了,key是字符串中的数字,稍等。
      

  4.   

    正确答案:import java.util.ArrayList;
    import java.util.Collection;
    import java.util.HashMap;
    import java.util.Hashtable;
    import java.util.List;
    import java.util.Map;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    public class SameChars { public static void main(String[] args){
    String list="tc1,tc2,tc4,bo5,bi9,bo1,bi8,cg1,cg3,cg5,b2n,b3n,b4n,cg4,cg8";
    String[] items=list.split(",");
    Hashtable<String,Map> result=new Hashtable<String,Map>();
    Pattern p=Pattern.compile("[0-9]+");


    for(int i=0; i<items.length;i++){
    String curStr=items[i];
    Matcher m=p.matcher(curStr);
    String curStrNoNum=curStr.replaceAll("\\d*", "");
    if (m.find()){
    if (!result.containsKey(curStrNoNum)){
    Map map=new HashMap();
    result.put(curStrNoNum, map);
    }
    Map map=result.get(curStrNoNum);
    map.put(m.group(), curStr);
    }

    }

    System.out.println(result.values());


    }
    }