57

既存の配列に要素を追加または追加したい

int[] series = {4,2};

今、私が送信した新しい値でシリーズを動的に更新したい..

3つの更新シリーズを次のように送信した場合のようにint[] series = {4,2,3};

4つの更新シリーズを次のように送信すると、再びint[] series = {4,2,3,4};

もう一度、更新シリーズを 1 つ送信する場合int[] series = {4,2,3,4,1};など

どうやってするの????

他の関数で5分ごとに整数を生成し、int[] series配列を更新するために送信したい..

4

14 に答える 14

89

配列の長さは Java では不変です。これは、一度作成した配列のサイズを変更できないことを意味します。2 つの要素で初期化した場合、その長さは 2 です。ただし、別のコレクションを使用することもできます。

List<Integer> myList = new ArrayList<Integer>();
myList.add(5);
myList.add(7);

そしてラッパーメソッドで

public void addMember(Integer x) {
    myList.add(x);
};
于 2013-04-09T10:41:42.333 に答える
56

これを試して

public static void main(String[] args) {
    int[] series = {4,2};
    series = addElement(series, 3);
    series = addElement(series, 1);
}

static int[] addElement(int[] a, int e) {
    a  = Arrays.copyOf(a, a.length + 1);
    a[a.length - 1] = e;
    return a;
}
于 2013-04-09T10:44:56.753 に答える
14

5 分ごとに整数を生成する場合は、コレクションを使用することをお勧めします。コードで必要な場合は、いつでも配列を取得できます。

それ以外の場合は、実行時にすべての値を処理するのに十分な大きさの配列を定義します (ただし、推奨されません)。

于 2013-04-09T10:39:43.190 に答える
8

他の人が示唆したように、コレクションを使用する方が良いでしょう。ただし、何らかの理由で配列に固執する必要がある場合は、Apache Commons ArrayUtilsが役立つ場合があります。

int[] series = {4,2};
series = ArrayUtils.add(series, 3); // series is now {4,2,3}
series = ArrayUtils.add(series, 4); // series is now {4,2,3,4};

このaddメソッドは新しい配列を作成し、指定された配列をコピーして、新しい要素を末尾に追加することに注意してください。これは、パフォーマンスに影響を与える可能性があります。

于 2014-09-05T10:06:18.867 に答える
5

これを試すこともできます。

public static int[] addOneIntToArray(int[] initialArray , int newValue) {

    int[] newArray = new int[initialArray.length + 1];
    for (int index = 0; index < initialArray.length; index++) {
        newArray[index] = initialArray[index];
    }

    newArray[newArray.length - 1] = newValue;
    return newArray;
}
于 2016-04-05T22:48:37.770 に答える
4

配列のサイズは変更できません。より大きな配列が必要な場合は、新しい配列を作成する必要があります。

ただし、より良い解決策は、必要に応じて拡張できる (Array)List を使用することです。アプリケーションで配列を使用する必要がある場合、メソッド ArrayList.toArray(T[] a) は配列を返します。

于 2013-04-09T10:40:29.210 に答える
3
public int[] return_Array() {

int[] a =new int[10];   
int b = 25;
for(int i=0; i<10; i++) {               
    a[i] = b * i;
    }
return a;

}
于 2015-05-11T07:26:41.930 に答える
2
class AddElement {
     public static void main(String s[]) {
        int arr[] ={2,3};
        int add[] = new int[arr.length+1];
        for(int i=0;i<add.length;i++){
        if(i==add.length-1){
            add[i]=4;
        }else{
            add[i]=arr[i];
        }
        System.out.println(add[i]);
        }
    } 
}
于 2015-05-22T10:11:11.613 に答える
2

...JDK 1.5 以降でのみ使用できます。JDK 4 以下を使用している場合は、次のコードを使用してください。

public static int[] addElement(int[] original, int newelement) {
    int[] nEw = new int[original.length + 1];
    System.arraycopy(original, 0, nEw, 0, original.length);
    nEw[original.length] = newelement;
}

それ以外の場合 (JDK 5 以上):

public static int[] addElement(int[] original, int... elements) { // This can add multiple elements at once; addElement(int[], int) will still work though.
    int[] nEw = new int[original.length + elements.length];
    System.arraycopy(original, 0, nEw, 0, original.length);
    System.arraycopy(elements, 0, nEw, original.length, elements.length);
    return nEw;
}

もちろん、多くの人が上で述べたように、メソッドを使用できるようにするCollectionまたはArrayListを使用できます.add()

于 2015-05-22T00:21:34.853 に答える
2

これは私のために働く:

int[] list = new int[maximum];
for (int i = 0; i < maximum; i++{
    list[i] = put_input_here;
}

このように、シンプルでありながら効率的です。

于 2016-03-19T20:51:44.363 に答える
2
import java.util.Arrays;

public class NumberArray {     

    public static void main(String []args){
        int[] series = {4,2};
        int[] newSeries = putNumberInSeries(1,series);
        System.out.println(series==newSeries);//return false. you won't get the same int[] object. But functionality achieved.
    }
    private static int[] putNumberInSeries(int i, int[] series) {
        int[] localSeries = Arrays.copyOf(series, series.length+1);
        localSeries[series.length] = i;
        System.out.println(localSeries);
        return localSeries;
    }
}
于 2013-04-09T10:59:28.210 に答える