簡體   English   中英

如何訪問對象數組的數組元素?

[英]How to access elements of an array of an array of objects?

public class arrayOfArrays{ 
       public Object[] array1;
       public int size;           

       arrayOfArrays(){
            array1 = new Object[10];
            array1[0] = new arrayOfInts();
   }
}

class arrayOfInts{
      public Integer[] array2;
      public int size;

      arrayOfInts(){
         array2 = new Integer[10]; 
    }
}

我正在嘗試創建某種二維數組,其中包含的數組長度各不相同。 例如,array1[0] 將有一個長度為 3 的 Int 數組。array1[1] 將有一個長度為 5 的 Int 數組,依此類推。

如果我想從我的 arrayOfArrays 類中訪問 array2 的元素。 我將如何做到這一點?

我試過: array1[this.size].array2[size] = x; 但是,這給了我一個錯誤。 我需要投射第二個數組嗎? 任何幫助,將不勝感激。 干杯

我真的不明白你為什么創建這些類。

您可以簡單地將任何類型的東西存儲在 Object 數組中。

Object[] array1 = new Object[ 5 ];
Random rd = new Random();

for( int i = 0; i<5; i++ )
  array1[ i ] = new int[ rd.nextInt( 5 ) + 1 ];

System.out.println( Arrays.deepToString( array1 ) );

在這里,我創建了 5 個隨機大小的 int 數組。

問題是您必須將 array1[i] 的結果轉換為 int[],只要您將其定義為 Object[]

int[] o1 = ( int[] ) array1[ 1 ];
System.out.println( o1 );

一個更簡單的解決方案可能是在整數數組上使用列表。 這樣就不需要投射了。

List<Integer[]> list1 = new ArrayList<>();

for( int i = 0; i<5; i++ )
  list1.add( new Integer[ rd.nextInt( 5 ) + 1 ] );

for( Integer[] array : list1 )
  for( int i=0;i<array.length;i++)
    array[i] = rd.nextInt( 100 );

System.out.println(  Arrays.deepToString( list1.toArray() ) );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM