2016-10-20 11 views
-2

.lengthメソッドを使用して配列のサイズを印刷しようとしています。しかし、最後にそれは常に1とここではない4.配列の長さが間違っていますか?

を返していることは私のコードです:

int size = 4; 
ArrayList<String> testArr = new ArrayList<String>(); 
String [] test = null; 

for (int i = 0; i < size; i++) { 
    testArr.add("test"); 
    test = testArr.toArray(new String[0]); 
} 

System.out.println(test.length); // returns 1 
+6

このコードは実際には4を出力します。 – Eran

+0

使用しているJavaのバージョンは何ですか?これは、 –

+1

私は何が間違っているのか分かりませんが、なぜarraylistを配列に変換しますか?arraylistにはsize()メソッドもあります... – Lucurious

答えて

1

問題ありません

あなたのコードを使用すると、期待通りに実際にあなたとして、ない1を4を返しありません述べました。

コードをそのまま使用して、追加のprintlnを追加し、もう一方をprintlnに変更しました。

int size = 4; 
ArrayList<String> testArr = new ArrayList<String>(); 
String[] test = null; 

for (int i = 0 ; i < size ; i ++) { 
    testArr.add ("test"); 
    test = testArr.toArray (new String[ 0 ]); 
    System.out.println ("i: " + i + " | test: " + Arrays.toString (test)); 
} 

System.out.println ("test.length: " + test.length); 

I:0 |テスト:[テスト]

i:1 |テスト:[テスト、テスト]

i:2 |テスト:[テスト、テスト、テスト]

i:3 |テスト:[テスト、テスト、テスト、テスト]

test.length:4

このコマンドの動作を理解するために、クラスのドキュメントを必ずお読みください:

ArrayList::toArray(array)

このリスト内のすべての要素を適切な順序(最初の要素から最後の要素まで)で含む配列を返します。返される配列の実行時の型は、指定された配列の実行時の型です。リストが指定された配列に収まる場合は、リストに戻ります。そうでない場合は、指定された配列の実行時の型とこのリストのサイズで、新しい配列が割り当てられます。

リストが指定された配列に余裕をもたせている場合(つまり、配列にリストよりも多くの要素がある場合)、配列の末尾の要素はnullに設定されます。

関連する問題