2012-05-05 5 views
1

3次元配列リストを作成する必要があります。3次元配列リストのどの要素にもアクセスしてアクセスする方法

ArrayList<ArrayList< ArrayList<Object>>> data_Header_Mapper; 

どのように私は3次元配列を設定でき、どのように3次元配列リストの葉の子(オブジェクト)にアクセスできますか。どんな助けでも事前に感謝しています。

私はベクトルに慣れていますが、いくつかの問題のために、以下のベクトルのコードをArrayListに変換したいと思います。 3次元ベクトルを生成するコードは次のとおりです。

for (int r=0;r<totalRows;r++) // r - Rows 
    { 

    for (int c=0;c<totalViewedCols;c++) //c- Columns 
    { 

     cAct=0; 
     while (cAct < totalActualCols) 
     // for (int cAct=0;cAct<totalActualCols;cAct++) //c- Columns 
     { 
     if (Cols.get(cAct).toLowerCase().equals(columnName.toLowerCase()) ) 
     { 
      ColValindex = colHeader_ForSave.indexOf(columnName) ;//Temp Comment 
      colValue= (String)data_ForSave.elementAt(r).get(ColValindex); 
     // ColValindex = header.indexOf(columnName) ; 
     // colValue= (String)data.elementAt(r).get(ColValindex); 

      data_Header_Mapper_Element.add(columnName); 
      data_Header_Mapper_Element.add(colValue); 
      } 
     cAct++; 
     } 
     if (data_Header_Mapper_Element.size() !=0) 
     { 
     data_Header_Mapper_Row.add(data_Header_Mapper_Element); 
     // data_Header_Mapper_Element.removeAllElements(); 
     data_Header_Mapper_Element =null; 
     data_Header_Mapper_Element=new Vector<String>(); 
     } 
    } 
     if (data_Header_Mapper_Row.size() !=0) 
    { 
     data_Header_Mapper.add(data_Header_Mapper_Row); 

     data_Header_Mapper_Row =null; 
     data_Header_Mapper_Row=new Vector<Vector<String>>(); 
     } 

    } 

アクセス3 Dのベクトルのためのコードは、私は次元のようなクラスのいくつかの変数を省略したが、これはアイデアです

for(int r=0;r<rowSize;r++) 
     { 

     for (int c=0;c<colSize;c++) 
     { 

     // To Build Insert And Update Query 
      columnDataType= dbe.GetDataTypeOfTableColumn(rsMetaData,data_Header_Mapper.elementAt(r).get(c).get(0).toString()); 
      dataSize=dbe.GetDataSizeOfTableColumn(rsMetaData,data_Header_Mapper.elementAt(r).get(c).get(0).toString()); 
      Validation.ValidateData(columnDataType, data_Header_Mapper.elementAt(r).get(c).get(1), dataSize); 

     } 

     } 

答えて

4
public class My3DArray { 

    private List<List<List<Object>>> list; 

    public My3DArray() { 
     this.list = generate3DArray(5, 5, 5); 
    } 

    public List<List<List<Object>>> generate3DArray(int dim1, int dim2, int dim3) { 
     List<List<List<Object>>> list = new ArrayList<List<List<Object>>>(); 
     for(int i = 0; i < dim1; i++) { 
      List<List<Object>> list2 = new ArrayList<List<Object>>(); 
      for(int j = 0; j < dim2; j++) { 
       List<Object> list3 = new ArrayList<Object>(dim3); 
       list2.add(list3); 
      } 
      list.add(list2); 
     } 
     return list; 
    } 

    public Object getElementIn3DArray(int i, int j, int k) 
     throws NullPointerException, ArrayIndexOutOfBoundsException { 
     return list.get(i).get(j).get(k); 
    } 

    public void setElementIn3DArray(Object o, int i, int j, int k) 
     throws NullPointerException, ArrayIndexOutOfBoundsException { 
     list.get(i).get(j).add(o); 
    } 
} 

public class Main { 
    public static void main(String[] args) { 
     My3DArray x = new My3DArray(); 
     x.setElementIn3DArray("Hello World", 0, 0, 0); 
     System.out.println(x.getElementIn3DArray(0, 0, 0)); 
     System.exit(0); 
    } 
} 

を下回っています。この例を使用する方法はあなた次第です。

+0

上記のコードで示したように、ループ内のリストをどのように埋めることができるか教えてください。 –

+0

私は動的リストを必要としていますが、固定されたものはありません。 –

+0

@Prog_Anila固定は単なるサンプルであり、その例に基づいてコードを書くことができます。提供された例では、入力配列/ベクトルが何であるか分かりません。 –

関連する問題