ユーザーが望むだけの要素を配列に格納したい。しかし、どうやってそれを行うのですか?.
配列を作成する場合は、固定サイズで作成する必要があります。新しい要素が配列に追加され、配列がいっぱいになるたびに、そのサイズを「1」だけ更新したいと思います。
いろいろな種類のコードに疲れましたが、うまくいきませんでした。
誰かが私にそれに関する解決策を(もし可能であればコードで)教えてくれれば、とても助かります。
配列を使用する代わりに、ArrayList
などの_Java.util.List
_の実装を使用します。 ArrayListにはリストの値を保持する配列バックエンドがありますが、配列サイズはリストによって自動的に処理されます。
_ArrayList<String> list = new ArrayList<String>();
list.add("some string");
_
他の要素タイプについては、list.toArray(new String[list.size()])
などを使用してリストを配列に変換することもできます。
オリジナルよりも1要素大きいサイズの一時配列を作成し、オリジナルの要素をtempにコピーして、一時配列を新しい配列に割り当てることができます。
public void increaseSize() {
String[temp] = new String[original.length + 1];
for (int i = 0; i < original.length; i++){
temp[i] = original[i];
}
original = temp;
}
サイズはさまざまな方法で変更できますが、同じ考え方が適用されます。
できません。新しい配列を作成してアイテムをその配列に移動するか、またはArrayListを使用できます。
低レベルでは、次のように行うことができます。
long[] source = new long[1];
long[] copy = new long[source.length + 1];
System.arraycopy(source, 0, copy, 0, source.length);
source = copy;
Arrays.copyOf()も同じことをしています。
copyOfメソッドをJava.util.Arrays
クラスString[]
で使用すると、サイズが自動的に/動的に増加します。
package com.google.service;
import Java.util.Arrays;
public class StringArrayAutoIncrement {
public static void main(String[] args) {
String[] data = new String[] { "a", "b", "c", "d", "e" };
String[] array = new String[0];// array initialize with zero
int incrementLength = 1;
for (int i = 0; i < data.length; i++) {
array = Arrays.copyOf(data, i + incrementLength);// increment by +1
}
/**
* values of array after increment
*/
for (String value : array) {
System.out.println(value);
}
}
}
出力:
a
b
c
d
e
リストオブジェクトを作成し、要素を追加して、list.toArray(new String [list.size()])を使用してそのリストオブジェクトを配列に変換します