大家好,今天碰到一个需求,要用java数组实现。长话短说,需求如下:有三个数组如下,对于b和c数组其实我们不必关心其中的内容,比如a,b,c,d,e,f之类的,我们只用知道其实a数组是按照b的大格式去复制a数组中的值,而按照c数组的格式去分割每一个值的就可以了。String[] a = {"1","|","2"};String[] b = {"a","b","c","|","d","e"};String[] c = {"a","|","b","|","c","|","d","|","e"};
根据以上三个数组我们需要得到下面的一个目标数组:{"1","|","1","|","1","|","2","|","2"};请问各位应该如何实现呢。我写了一段现在又错误进行不下去了,有点晕。请赐教啊

解决方案 »

  1.   

    package test;import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;public class Sample {
    public static void main(String[] args) {
    List list = new ArrayList();
    String[] a = { "1", "|", "2" };
    String[] b = { "a", "b", "c", "|", "d", "e" };
    String[] c = { "a", "|", "b", "|", "c", "|", "d", "|", "e" };
    for (int i = 0; i < a.length; i++) {
    list.add(a[i]);
    }
    for (int i = 0; i < b.length; i++) {
    list.add(b[i]);
    }
    for (int i = 0; i < c.length; i++) {
    list.add(c[i]);
    }
    Iterator it = list.iterator();
    while (it.hasNext()) {
    System.out.println(it.next());
    }
    }
    }
      

  2.   

    d代表目标数组,d.add()是偶写的伪代码。
    这是我写的程序,现在卡住了,不知道怎么继续下去,求赐教:
    for(int i=0;i<a.length;i++)
    {
    if(!("|").equals(a[i]))
    {
    for(int j=0,int k=0;j<b.length,k<c.length;j++,k++)
    {
    if(!("|").equals(b[j]))
    {
    d.add(a[i]);
    }else{
    ++j;
    continue;
    }
    if(("|").equals(c[k]))
    {
    d.add("|");
    }
    }
    }else{
    ++i;
    continue;
    }
    }
      

  3.   

    这个没用的吧,这个是简单地把a,b,c数组装进去然后打印吧?难道是我没说清楚?!我觉得我已经说清楚了啊额
      

  4.   

        public static void main(String args[])
        {
         String[] a = {"1","|","2"};
         String[] b = {"a","b","c","|","d","e"};
         String[] c = {"a","|","b","|","c","|","d","|","e"};
         String regex =",|\\[|\\]|\\s";
         String bStr=Arrays.toString(b);
         bStr=bStr.replaceAll(regex, "");
         String[] bKey  = bStr.split("\\|");
         String aStr=Arrays.toString(a);
         aStr=aStr.replaceAll(regex, "");
         String[] aValue = aStr.split("\\|");
         Map<String,String> map = new HashMap<String,String>();
         for(int i=0;i<bKey.length;i++){
         String key = bKey[i];
         String[] keyArray=key.split("(?<!^)(?=[a-z])");
         for(String str:keyArray){
         map.put(str,aValue[i]);
         }
         }
         String[] temp = c.clone();
         for(int j=0;j<temp.length;j++){
         if(map.containsKey(temp[j])){
         temp[j]=map.get(temp[j]);
         }
         }
         System.out.println(Arrays.toString(temp));
        }
      

  5.   

    public static void main(String args[])
    {
    String[] a = {"1","|","2"};
    String[] b = {"a","b","c","|","d","e"};
    String[] c = {"a","|","b","|","c","|","d","|","e"};
    String regex =",|\\[|\\]|\\s";
    String bStr=Arrays.toString(b);
    bStr=bStr.replaceAll(regex, "");
    String[] bKey = bStr.split("\\|");
    String aStr=Arrays.toString(a);
    aStr=aStr.replaceAll(regex, "");
    String[] aValue = aStr.split("\\|");
    Map<String,String> map = new HashMap<String,String>();
    for(int i=0;i<bKey.length;i++){
    String key = bKey[i];
    String[] keyArray=key.split("(?<!^)(?=[a-z])");
    for(String str:keyArray){
    map.put(str,aValue[i]);
    }
    }
    String[] temp = c.clone();
    for(int j=0;j<temp.length;j++){
    if(map.containsKey(temp[j])){
    temp[j]=map.get(temp[j]);
    }
    }
    System.out.println(Arrays.toString(temp));
    }
      

  6.   

    算法:public static void copy(String[] a,String[] b,String[] c) {
         int n = 0;
         int n2 = 0;
         for(int i = 0; i < b.length;i++) {
         if(b[i].equals("|")) {
         n += 2;
         }
         else {
         b[i] = a[n];
         }
         }
         for(int i = 0;i < b.length;i++) {
         if(b[i].equals("|")) {
         continue;
         }
         else {
         c[n2] = b[i];
         n2 += 2;
         }
         }
        }运行测试String[] a = {"1","|","2"};     String[] b = {"a","b","c","|","d","e"};     String[] c = {"a","|","b","|","c","|","d","|","e"};
         copy(a,b,c);
         for(String cc:c)
         System.out.print(cc);结果:1|1|1|2|2再测试     String[] a = {"1","|","2","|","3"};     String[] b = {"a","b","c","|","d","e","|","f","g","h"};     String[] c = {"a","|","b","|","c","|","d","|","e","|","f","|","g","|","h"};
         copy(a,b,c);
         for(String cc:c)
         System.out.print(cc);结果:1|1|1|2|2|3|3|3
      

  7.   

    谢谢。其实我想要的是利用三个数组操作的逻辑代码,比如多层嵌套的for循环就可以实现,不需要正则去判断和匹配,我的数组内容是无所谓的,主要是根据格式生成目标格式的数组格式。谢谢
      

  8.   

    引用 6 楼 closewbq 的回复:
    public static void main(String args[])
    {
    String[] a = {"1","|","2"};
    String[] b = {"a","b","c","|","d","e"};
    String[] c = {"a","|","b","|","c","|","d","|","e"};
    String regex =",|\\[|\\]|\\s";
    St……非常感谢。其实我想要的是利用三个数组操作的逻辑代码,比如多层嵌套的for循环就可以实现,不需要正则去判断和匹配,我的数组内容是无所谓的,主要是根据格式生成目标格式的数组格式。谢谢 
      

  9.   

    内容变化测试:     String[] a = {"亚","|","灭","|","碟","|","!"};     String[] b = {"a","b","c","|","d","e","|","f","g","h","|","L"};     String[] c = {"a","|","b","|","c","|","d","|","e","|","f","|","g","|","h","|","L"};
         copy(a,b,c);
         for(String cc:c)
         System.out.print(cc);结果:亚|亚|亚|灭|灭|碟|碟|碟|!
      

  10.   


    非常感谢,你的code让我找到了灵感,呵呵。
    差不多就是这个意思,谢谢阿!!!