3

サイズをハードコーディングせずに、別のクラスのクラスのオブジェクトの配列を初期化するにはどうすればよいですか?

4

9 に答える 9

11

リストを使用します。リストの作成時にサイズを宣言する必要はありません。toArray()メソッドは、リストの配列表現を返します。使用できる実装は複数ありますが、最も一般的なのはArrayListです(ただし、実装を特定の状況にマッピングするのが最適です)。

于 2011-09-28T14:02:13.123 に答える
10

配列は、作成後に固定サイズになります。サイズはコンパイル時に知る必要はありませんが、作成時に知る必要があります。例えば:

public String[] createArray(int size) {
    // Not hard-coded, but array is not expandable
    return new String[size];
}

時間の経過とともに縮小する可能性のあるコレクションが必要な場合はList<E>、などのさまざまな実装を確認してくださいArrayList<E>

于 2011-09-28T14:02:19.840 に答える
3

配列の長さは固定されています。コレクションの使用をお勧めします。

コレクションに関する記事は次のとおりです。

http://en.wikipedia.org/wiki/Java_collections_framework

これらを使用すると、Add()コマンドなどを使用して要素を追加できます。

前の回答で述べたように、ArrayListまたはListはコレクションです。

于 2011-09-28T14:09:42.647 に答える
1

Object[]は常に固定サイズになります。可変長のコレクションが必要な場合は、ArrayList、LinkedList、または他の多くのコレクションの1つを試してください。

コレクションはすべてパフォーマンスの側面が異なるため、慎重に選択してください。

于 2011-09-28T14:02:22.263 に答える
1

可変配列の場合、他のコンテナオブジェクトが使用されます。

オブジェクトのセットを使用する場合、ArrayListまたはVectorオブジェクトが使用されます。[0]="Ben"の代わりに"Name"="Ben"などのオブジェクトキーを使用してオブジェクトを保存することもできます。

Vector v = new Vector();
for(int i = 0; i < 100; i++){
 Object o = new Object();
 // init object
 v.addElement(o);
}

for(int i = 0; i < 100; i++){
 Object o = v.elementAt(i);
 // manipulate object
}

これで、長さが定義されていないオブジェクトの任意のリストができました。vector.size()メソッドを使用して検出されたサイズ。

java.utilパッケージが必要であり、J2SE1.3以降の一部です。

于 2011-09-28T14:06:12.777 に答える
1

他の場所で説明されているように、配列オブジェクトのサイズは固定されています。配列を使用しなければならない理由がある場合は、次のいずれかまたは両方の手法を使用できます。

  • 未使用のエントリをnullのままにして、必要以上に大きくします。「slotsUsed」変数を保持することをお勧めします。

  • 配列が小さくなりすぎたら、大きくして内容をコピーします。

これらは両方ともArrayList内で使用されます。

于 2011-09-28T14:09:14.913 に答える
0

このように、新しい配列を作成して初期化できます。

String[] strArray = {"Initialize","Array","Like","This"};

動的サイズの配列が必要な場合は、ArrayListを使用することをお勧めします。

于 2011-09-28T14:02:53.567 に答える
0

オブジェクトの代わりにプリミティブの配列が必要な場合は、Trove4jを使用できます。それ以外の場合は、ArrayListまたはCopyOnWriteArrayListを使用して配列をラップします。他にもListの実装がありますが、これらはアクセス時間の配列のようには機能しません。

于 2011-09-28T16:28:37.307 に答える
0

アプリケーションに必要なオブジェクトの上限がわかっている場合は、配列のサイズを次のように宣言すると便利な場合があります。

static final int ARRAY_SIZE = 1000;

これはクラスの始めに近いので、簡単に変更できます。メインコードで配列をインスタンス化します

Object[] objects = new Object[ARRAY_SIZE];

また、使用するアレイのサイズが別のアレイと同じ場合は、使用を検討してください

Object[] objects = new Object[other_objects.length];
于 2012-02-05T14:31:07.850 に答える