59

私はarraylistの概念に不慣れです。次のような短いプログラムを作成しました。

ArrayList<int[]> arl=new ArrayList<int[]>();
int a1[]={1,2,3};
arl.add(0,a1);
System.out.println("Arraylist contains:"+arl.get(0));

出力は次のとおりです。Arraylist contains:[I@3e25a5

今私の質問は次のとおりです。

  1. 正しい値、つまり 1 2 3 を表示する方法。
  2. a1[1]の値を知りたい場合、配列a1の単一要素にアクセスするにはどうすればよいですか。
4

11 に答える 11

78

まず第一に、コンテナを初期化するために、プリミティブ型を使用することはできません(つまりint、使用できますint[]が、整数の配列だけが必要なため、使用できません)。代わりに、Integer次のようにを使用する必要があります。

ArrayList<Integer> arl = new ArrayList<Integer>();

要素を追加するには、次のadd関数を使用します。

arl.add(1);  
arl.add(22);
arl.add(-2);

最後になりましたが、印刷にはArrayListの組み込み機能を使用できますtoString()

System.out.println("Arraylist contains: " + arl.toString());  

i要素 ( iは 0 から配列 1 の長さまでのインデックス)にアクセスする場合は、次の操作を実行できます。

int i = 0; // Index 0 is of the first element
System.out.println("The first element is: " + arl.get(i));

作業を開始する前に、まず Java コンテナについて読むことをお勧めします。

于 2012-05-07T06:34:50.713 に答える
23
  1. を使用しArrays.toString( arl.get(0) )ます。

  2. arl.get(0)[1]

于 2012-05-07T06:28:01.130 に答える
5

Java では、配列はオブジェクトです。したがって、arl.get(0) への呼び出しは、System.out への呼び出しで ascii として表示されるプリミティブな int[] オブジェクトを返します。

したがって、最初の質問に対する答えは

System.out.println("Arraylist contains:"+Arrays.toString( arl.get( 0 ) ) );

特定の要素を探している場合は、返された int[] オブジェクトをそのように参照する必要があります。2番目の質問への答えは次のようになります

    int[] contentFromList = arl.get(0);
    for (int i = 0; i < contentFromList.length; i++) {
        int j = contentFromList[i];
        System.out.println("Value at index - "+i+" is :"+j);
    }
于 2012-05-07T06:37:45.537 に答える
4

<Integer>代わりに使用する必要があります<int>

int a1[] = {1,2,3};
ArrayList<Integer> arl=new ArrayList<Integer>();
for(int i : a1) {
    arl.add(i);        
    System.out.println("Arraylist contains:" + arl.get(0));
}
于 2015-10-18T15:57:21.247 に答える
2

誰もが正しい。int[] オブジェクトを直接出力することはできませんが、整数配列の ArrayList を使用しない必要もありません。

を使用して、

Arrays.toString(arl.get(0))

コンマなどの間に何かを挿入する場合は、String オブジェクトを部分文字列に分割することを意味します。

int 配列の観点から amv が探していたものは次のとおりです。

System.out.println("Arraylist contains: " 
    + arl.get(0)[0] + ", " 
    + arl.get(0)[1] + ", " 
    + arl.get(0)[2]);

この回答はamvには少し遅れていますが、それでも他の人には役立つかもしれません.

于 2014-03-31T22:45:17.653 に答える