2016-06-30 6 views
0

配列を配列に挿入し、後でJavaで読み取ることはできますか?このような何か:ArrayListをArrayListに挿入する

ArrayList<Integer> array = new ArrayList<>(); 
array.add([1,4,5]); 
array.add([3,7,2]); 

アレイ:

{ [1,4,5], [3,7,2] } 

など読み:

print(array[0][1]); //prints 4 

感謝。

+0

ないのArrayListのを使用したいですしかしそれはたくさんの(IMO)コードを書いてください。 – ControlAltDel

+0

arraylistは配列ではなくリストです。彼らは別のものです。 2次元配列を作成することができます – CSK

+1

表示された配列が追加されたときに[1] [2]で4を出力する賢明なJavaコードは想像できません(配列の配列のような2次元配列型を使用する場合でも) –

答えて

4

ArrayList<int[]>と書いて、.add(new int[]{...})のような値を渡すことができます。例えば

、プリント値に

List<int[]> list = new ArrayList<>(); 
list.add(new int[]{1, 2, 3}); 

アウトあなたがget(int index)によって、まずint[]配列を取得し、その後[index]によってこの配列から値を取得する必要があります:

について
System.out.print(list.get(0)[0]); // prints 1 

コメントの混乱。

  1. 生のタイプはありません。私は書いていませんでした、例えば、ListまたはList<Object>どこでも。
  2. int[]は配列なので、参照型であり、汎用パラメータとして使用できます。
  3. intは、ジェネリックで動作しない/使用しないプリミティブです。ラッパークラス - Integerを考えてみましょう。
  4. 上記のダイヤモンド<>を使用しました。どうして? "定型文のコード"を防止する。
  5. のJava SE 7では

以降、あなたがいる限り、コンパイラが判断できて型引数の空のセット(<>)とジェネリッククラスのコンストラクタを呼び出すために必要な型引数を置き換えることができ、または推論、コンテキストからの型引数この角括弧のペア、<>は、非公式にダイヤモンドと呼ばれています。
List<int[]> list = new ArrayList<>();
List<int[]> list = new ArrayList<int[]>();はリスト型で、前の

+4

@バーデダン私はあなたが言葉を混ぜていると思います。 'int'はプリミティブ型であり、生の型ではありません。 –

+0

あなたの-1を修正しました。私はこのコミュニティを時々取得しません。あなたの答えは完全に細かいです。 –

+0

@SotiriosDelimanolis spot - "生の型は、型引数を持たない汎用クラスまたはインタフェースの名前です" – Jeutnarg

0

のArrayListに相当します。

あなたは2D配列(配列内の配列)

int[][] a = new int[][]{{1,4,5},{3,7,2}}; 
System.out.println(a[0][1]); 
1

を作成したい場合は、arraylistに整数配列を追加することができますが、その後、ArrayListのように定義する必要があります。

List<int[]> list = new ArrayList<int[]>(); 

ファクトより一般的なバージョンは

List<Object> list = new ArrayList<Object>(); 

array.add([1,4,5]);print(array[1][2]);正しくlist.add(new int[]{1,4,5});

として

を実現しているが正しくとして実装されます、

System.out.println(((int [])list.get(1))[2]); 
+0

int []が使用したいタイプであることを知っているときに、より汎用的なバージョンを使用するのはなぜですか? – lucasvw

+0

私はあなたがそれを使用しなければならないとは決して言わなかった、私はOPにそれを認識させたい。 –

+0

しかし、何かあれば、OPをもっと混乱させるだけです。 IMOそれはあなたの答えを混乱させるが、それは大きな問題ではない。 – lucasvw

0

あなたがのArrayList直接

ArrayList<ArrayList<Integer>> intArrays = new ArrayList<ArrayList<Integer>>(); 
    //rows 
    for(int i =0;i<4;i++) 
    { 

     intArrays.add(new ArrayList<Integer>()); 
     //cols 
     for(int j=0;j<4;j++) 
     { 
      intArrays.get(i).add(j); 
     } 
    } 
    //rows 
    for(int i =0;i<4;i++) 
    { 

     //cols 
     for(int j=0;j<4;j++) 
     { 
      System.out.print(intArrays.get(i).get(j)); 
     } 
     System.out.println(); 
    } 
関連する問題