0

私は Android プラットフォーム用に開発しています。質問を簡単にするために、エンティティに疑似名を使用しています。

クラス StuffClass[] のオブジェクト配列 stuff[] があります。

StuffClass stuff[]={
new StuffClass(Argument, argument, argument),
new StuffClass(argument, argument, argument)
};

3 つの引数の結果を返すアクティビティがあり、それを使用して新しいオブジェクトを stuff[] に追加します。私は次のようにしました:

stuff[stuff.length]=new StuffClass(argument, argument, argument);

そして、ArrayOutOfBounds を取得します (それが起こると考えられます)。

では、stuff[] 配列に新しいオブジェクトを作成するにはどうすればよいでしょうか?

4

5 に答える 5

1

配列は静的であるため、新しい配列を作成しないとサイズを変更できません。その代わりに、 ArrayListなどの動的データ構造を使用できます。

例:

List<MyType> objects = new ArrayList<>();
objects.add(new MyType());

ここでは、配列のサイズを忘れています。

于 2013-08-21T00:39:47.443 に答える
0

既存の配列のサイズを増やすことはできません。作成されると、配列のサイズは固定されます。

別のより大きな配列を作成し、古い配列から新しい配列にアイテムをコピーする必要があります。

より良い代替手段は、を使用することArrayListです。にaddアイテムを追加するArrayListと、必要に応じて容量がバックグラウンドで拡張されます。サイズを大きくすることを心配する必要はありません。

于 2013-08-21T00:39:26.610 に答える
0

Java配列は固定長です。必要な長さで初期化する必要があります。

すべてを処理するArrayListなどの Collection の使用を検討してください。

List<StuffClass> myList = new ArrayList<>();
myList.add(...);

リストは配列と同様の動作をサポートします。つまり:

myList.set(i, elem);
myArray[i] = elem;

elem = myList.get(i);
elem = myArray[i];

len = myList.size();
len = myArray.length;

その後、リストを配列に変換できます。

StuffClass[] myArray = myList.toArray(new StuffClass[myList.size()]);

リストを使用したくない場合は、System.arrayCopyを使用して、より多くの要素を持つ新しい配列を作成することを検討してください。

良い説明については、こちらをお読みください。

于 2013-08-21T00:40:17.303 に答える
0

ArrayList を使用してこれを行うことができます

arraylist.add(オブジェクト);

于 2013-08-21T00:40:36.513 に答える