一个二维的字符串vector,记录的是一个表格,其中每一维是其中表中的一条数据。
现在来个算法,将此二维vector转化仍为二维字符串vector, 但是每一维是其中表中的一个属性的所有值,
就是说,原来是横着塞数据,现在变竖着塞了
请问两个嵌套的循环怎么写呢?
求教了,谢谢

解决方案 »

  1.   

    谢谢指点,您说得很对可惜条件不具备,只能java解决,没数据库。
      

  2.   

    答:参考代码:
    public class Reverse { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
           String[][] vector={{"1","2", "4", "5", "2", "6", "7"},       
                           {"2","9", "8", "7", "1", "0", "7"},
                           {"4","5", "6", "7", "8", "1", "0"} 
                             };
           String[][] rs=new String[vector[0].length][vector.length];
       for(int i=0;i<vector.length;i++)
       {
       for(int j=0;j<vector[i].length;j++)
       {
       rs[j][i]=vector[i][j];
       }
       }
    //测试结果:
       for(String[] e1:rs)
       {
       for(String e2:e1)
       System.out.print(e2+" ");
       System.out.println();
       }
    }}
    程序运行结果:
    1 2 4 
    2 9 5 
    4 8 6 
    5 7 7 
    2 1 8 
    6 0 1 
    7 7 0 
      

  3.   

    谢谢楼上高手指点,哈但是,如果我不用数组
    而是用Vector<Vector<String> >  怎么办? 没有二维的下标的?
      

  4.   


    public static void main(String[] args){
      Vector<Integer> v1=new Vector<Integer>();
      v1.add(1);
      v1.add(2);
      Vector<Integer> v2=new Vector<Integer>();
      v2.add(2);
      v2.add(9);
      Vector<Vector<Integer>> v=new Vector<Vector<Integer>>();
      v.add(v1);
      v.add(v2);
      System.out.println(v.size());
      Vector<Integer> v3=new Vector<Integer>();
      Vector<Integer> v4=new Vector<Integer>();
      for(Vector<Integer> temp:v){
      for(int i=0;i<temp.size();i++){
      if(i==0){
      v3.add(temp.get(i));
      }
      if(i==1){
      v4.add(temp.get(i));
      }
      }
      }
      System.out.println(v3);
      System.out.println(v4);
      }
      

  5.   

    out
    [[1, 2], [2, 9]]
      

  6.   

    如果有300个属性,楼上的 两个 if 如何用循环代替?
    因为每个循环内的vector跳出循环后还要再被使用也是我现在头疼的问题。
      

  7.   

    哪有这么麻烦,弄个Vector 数组做输出就行了,
      

  8.   

    答:参考代码:import java.util.*;
    public class Reverse { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub

          // String[][] vector={{"1","2", "4", "5", "2", "6", "7"},       
        //                   {"2","9", "8", "7", "1", "0", "7"},
        //                   {"4","5", "6", "7", "8", "1", "0"} 
         //                    };

    Vector<Vector<String>> vector=new Vector<Vector<String>>();
    Vector<String> v1=new Vector<String>();
    v1.add("1");
    v1.add("2");
    v1.add("3");
    vector.add(v1);
    Vector<String> v2=new Vector<String>();
    v2.add("4");
    v2.add("5");
    v2.add("6");
    vector.add(v2);



           String[][] rs=new String[vector.get(0).size()][vector.size()];
       for(int i=0;i<vector.size();i++)
       {
       for(int j=0;j<vector.get(i).size();j++)
       {
       rs[j][i]=vector.get(i).get(j);
       }
       }
    //测试结果:
       for(String[] e1:rs)
       {
       for(String e2:e1)
       System.out.print(e2+" ");
       System.out.println();
       }
    }}
    程序运行结果:1 4 
    2 5 
    3 6 
      

  9.   

    谢谢楼上,距离成功仅仅一步之遥
    请问如何将生成的二维数组转化为二维Vector? 就是简单一点的方法,有无之间生成vector的
    或者库函数转换成vector的?就是不再用循环的方法
      

  10.   


     public static void main(String[] args){
      Vector<Integer> v1=new Vector<Integer>();
      v1.add(1);
      v1.add(3);
      v1.add(5);
      Vector<Integer> v2=new Vector<Integer>();
      v2.add(2);
      v2.add(9);
      v2.add(7);
      Vector<Vector<Integer>> v=new Vector<Vector<Integer>>();
      v.add(v1);
      v.add(v2);
      System.out.println(v.size());
      Vector<Vector<Integer>> vResult=new Vector<Vector<Integer>>();
      for(int i=0;i<v.get(0).size();i++){
      Vector<Integer> vtemp=new Vector<Integer>();
      vtemp.setSize(v.size());
      vResult.add(vtemp);
      }
      System.out.println(vResult);

      for(int j=0;j<vResult.size();j++){
      for(int i=0;i<vResult.get(j).size();i++){
      vResult.get(j).set(i, v.get(i).get(j));
      }
      }   System.out.println(vResult);
      }
    }
      

  11.   

     for(Vector <Integer> temp:v){ 
              for(int i=0;i <temp.size();i++){ 
    这个循环到过来使用吧!类似于如下:(伪代码) Vector <Vector <Integer>> v_bak=new Vector <Vector <Integer>>(); 
    for(int i=0;i <v.get(0).size;i++){ 
         for(Vector <Integer> temp:v){ 
              Vector <Integer> vi=new  Vector <Integer> ()
              vi.add()
              }
     v_bak.add(vi);}
           
              
      

  12.   

     把vector<Vector<Integer>>转换成String[][]呢
      

  13.   

     把vector<Vector<Integer>>转换成String[][]呢