プログラムの実行中にサイズと値が変わるように整数配列を初期化する方法を考えていましたが、何か提案はありますか?
プログラムの実行中にサイズと値が変わるように整数配列を初期化する方法を考えていましたが、何か提案はありますか?
回答:
はい:ArrayListを使用します。
Javaでは、「通常の」配列は固定サイズです。あなたはそれらにサイズを与える必要があり、それらを拡大したり縮小したりすることはできません。サイズを変更するには、新しい配列を作成し、必要なデータをコピーする必要があります。これは非効率であり、面倒です。
幸い、一般的なデータ構造を実装するあらゆる種類の組み込みクラスと、その他の便利なツールもあります。それらの完全なリストについては、Java 6 APIを確認してください。
1つの注意点:ArrayListはオブジェクト(例:整数)のみを保持でき、プリミティブ(例:int)は保持できません。ほとんどの場合、自動ボクシング/自動アンボクシングがこれをサイレントに処理しますが、実行している内容によっては奇妙な動作が発生する可能性があります。
size
プログラムが進行しても配列のサイズは変更されません。size
その行が実行されたときに発生するサイズを取得します。
null
、最後にaが付きます。何かアイデアはありますか?
Javaの配列は固定サイズです。必要なのは、Javaで利用できる非常に貴重なコレクションの1つであるArrayListです。
の代わりに
Integer[] ints = new Integer[x]
あなたが使う
List<Integer> ints = new ArrayList<Integer>();
そして、あなたが使用してリストを変更するints.add(y)
とints.remove(z)
、他の多くの便利な方法の中で、あなたが適切なのJavadocで見つけることができます。
Javaで利用できるコレクションクラスは非常に強力であり、Java初心者が不必要に自分自身を書き直そうとする組み込み機能を数多く提供するため、これらを検討することを強くお勧めします。
List<Integer>
代わりになぜ使用するのArrayList<Integer>
ですか?
インスタンス化されると、配列は固定サイズになります。代わりにリストを使用できます。
オートボクシングはリストを配列のように使用できるようにします。それには単純にint値を入れることができます:
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
は動的配列ではなく、配列に基づくリストArrayList
であるため、が示唆する以前の回答に同意しません。違いは、以下を実行できないことです。ArrayList
ArrayList list = new ArrayList(4);
list.put(3,"Test");
バッキング配列がそのような追加を許可する場合でも、この位置にはまだ要素がないため、IndexOutOfBoundsExceptionを提供します。したがって、@ randy-lanceによって提案されているようなカスタムの拡張可能な配列実装を使用する必要があります
Simple code for dynamic array. In below code then array will become full of size we copy all element to new double size array(variable size array).sample code is below
public class DynamicArray {
static int []increaseSizeOfArray(int []arr){
int []brr=new int[(arr.length*2)];
for (int i = 0; i < arr.length; i++) {
brr[i]=arr[i];
}
return brr;
}
public static void main(String[] args) {
int []arr=new int[5];
for (int i = 0; i < 11; i++) {
if (i<arr.length) {
arr[i]=i+100;
}
else {
arr=increaseSizeOfArray(arr);
arr[i]=i+100;
}
}
for (int i = 0; i < arr.length; i++) {
System.out.println("arr="+arr[i]);
}
}
}
ソース:動的配列の作り方
私はこの質問に答えましたが、配列リストやこれが割り当てであった他のことは必要ありません。私はそれを完了したので、配列のサイズを増やすことができます。これは、 Java Dynamic Arrayの使用方法 のリンクと、Java Dynamic配列に回答した私の質問のリンクです
int[] array = new int[size];
size
は変数ですが、配列の長さは固定されている必要がありますね。@ Lord Torgamus