小弟现在有一数组的问题未想通的。
我从前台传值到后台(一数组的形式)。数组内的元素为:G111#0001,G111#0002,G111#0003,G222#0001,G222#0002,G222#0003,G555#0001,G666#0001,G666#0002我想根据上数组的元素得出以下结果G111#0001-0003,G222#0001-0003,G555#0001,G666#0001-0002
我该怎么做?前台传到后台数组元素的元素也不是固定的,求哪位大哥指教

解决方案 »

  1.   

    想问下,你前台是需要G111#0001-0003,G222#0001-0003,G555#0001,G666#0001-0002这样经过处理后的数组,还是原始数组
    如果前台需要是需要的已经处理好的,那么就在后台先处理好后在传递给前台
    这个后台处理过程不难,无非就是对String和List的操作
      

  2.   

    我想后台处理成G111#0001-0003,G222#0001-0003,G555#0001,G666#0001-0002这样,然后在传到前台
      

  3.   


    String[] ss = {"G111#0001","G111#0002","G111#0003","G222#0001","G222#0002","G222#0003","G555#0001","G666#0001","G666#0002"} ; 
    Map<String, String> map = new HashMap<String, String>() ;
    for (int i = 0; i < ss.length; i++) {
    String[] strs = ss[i].split("#");
    map.put(strs[0], strs[1]) ;
    }
    String [] newSs= new String[map.size()] ;
    int i  = 0 ;
    for (String key :map.keySet()) {
    if(map.get(key).equals("0001"))
    newSs[i] =key+"#"+"0001" ;
    else
    newSs[i] =key+"#"+"0001-"+map.get(key) ;
    i+=1;
    }
    for (int j = 0; j < newSs.length; j++) {
    System.out.println(newSs[j]);
    }
    去试试吧
      

  4.   

    G111#0001,G111#0002,G111#0003,G222#0001,G222#0002,G222#0003,G555#0001,G666#0001,G666#0002是我现在已经从前台传到后台的一个list集合,我需要在后台将数组处理成G111#0001-0003,G222#0001-0003,G555#0001,G666#0001-0002这样的一个String
      

  5.   

    List lotList = new ArrayList();
    lotList.add("G111#0002");
    lotList.add("G111#0003");
    lotList.add("G111#0004");
    lotList.add("G222#0005");
    lotList.add("G222#0006");
    lotList.add("G222#0007");
    lotList.add("G555#0009");
    lotList.add("G555#0010");
    lotList.add("G666#0001");
    Map<String, String> map = new HashMap<String, String>() ;
    for (int i = 0; i < lotList.size(); i++) {
    String a = lotList.get(i).toString();
                String[] strs = a.split("#");
                map.put(strs[0], strs[1]) ;
            }
    String [] newSs= new String[map.size()] ;
            int i  = 0 ;
            for (String key :map.keySet()) {
                if(map.get(key).equals("0001"))
                newSs[i] =key+"#"+"0001" ;
                else
                    newSs[i] =key+"#"+"0001-"+map.get(key) ;
                i+=1;
            }
            for (int j = 0; j < newSs.length; j++) {
             String b = newSs[j] + ",";
                System.out.print(b);
            }
      

  6.   

    是有序,只是不一定是从0001开始而已,可能是0002开始,比如说这个数组
    G111#0001,G111#0002,G111#0003,G222#0004,G222#0005,G222#0006,G555#0008,G666#0009,G666#0010,G666#0011
    那么我需要的结果就是G111#0001-G111#0004,G222#0004-G222#0006,G555#0008,G666#0009-G666#0011
      

  7.   


    String[] ss = {"G111#0001","G111#0002","G111#0003","G222#0001","G222#0002","G222#0003","G555#0001","G666#0001","G666#0002"} ; 
    Map<String, Map<String, String>> map = new HashMap<String,  Map<String, String>>() ;
    for (int i = 0; i < ss.length; i++) {
    String[] strs = ss[i].split("#");
    if(map.containsKey(strs[0])) {
     Map<String, String> map2 = map.get(strs[0]) ;
     map2.put(strs[1], strs[0]) ;
    map.put(strs[0], map2 ) ;
    }else{
     Map<String, String> map2 = new LinkedHashMap<String, String>() ;
     map2.put(strs[1], strs[0]) ;
    map.put(strs[0], map2) ;
    }
    }
    System.out.println(map.size());
    String s = "" ;
    int i  = 0 ;
    for (String key :map.keySet()) {
     Map<String, String> map2 = map.get(key) ;
     int j = 0 ;
     for(String key2 :map2.keySet()) {
    if(j==0)
     s=s+ map2.get(key2) +"#"+key2 ;
     else
     if(j== map2.size()-1)
     s= s+"-"+key2 ;
    j=j+1;
     }
     if(i!=map.size()-1)
     s=s+",";
     i=i+1 ;
    }
    System.out.println(s);可以了
      

  8.   

    我测试了楼上的代码 如果在给定数组中数据是乱序的 就不行了 当然楼主没那么说
    可以使用TreeSet与TreeMap 
    TreeMap 对key排序  TreeSet对value排序 在遍历TreeSet即可
      

  9.   


        public static void main(String[] args) {
           String[] x = {"G666#0002","G111#0001","G111#0002","G111#0003","G222#0001","G222#0002","G222#0003","G555#0001","G666#0001"};
           Arrays.sort(x);
           List<String> list = new ArrayList<String>();
           String st1 = "";
           String st2 = "";
           String temp="";
           for(int i = 0 ;i<x.length;i++){
           st1 = x[i].substring(0, x[i].indexOf('#'));
           if(i<x.length-1){
           st2 = x[i+1].substring(0, x[i+1].indexOf('#')); 
           }else{
           st2 = "";
           }
           String end = x[i].substring(x[i].indexOf('#')+1);
           if(st2.equals(st1)){
           if(temp.equals(""))
           temp = end;
           }else{
           String val  = "";
           if(!temp.equals(end)){
           val= st1+"#"+temp+"-"+end;
               
           } else{
           val = st1+"#"+end;
           }
           list.add(val);
           }
           
           }
           for(String y : list){
           System.out.println("*********"+y);
           }
    }
    }不管你是什么顺序,不管从什么开始,我就是先排序然后进行一系列操作,不过我这个方法貌似有点拼凑的嫌疑,没想到好方法,互相探讨。