ajouter un élément au tableau int [] en java [dupliquer]

Cette question a déjà une réponse ici:

Voulez ajouter ou ajouter des éléments au tableau existant

int[] series = {4,2};

Maintenant, je veux mettre à jour la série dynamiquement avec de nouvelles valeurs que j'envoie..

Comme si j'envoie 3 séries de mise à jour comme int[] series = {4,2,3};

Encore une fois si j'envoie 4 séries de mise à jour comme int[] series = {4,2,3,4};

Encore une fois si j'envoie 1 série de mise à jour comme int[] series = {4,2,3,4,1}; ainsi de suite

Comment le faire????

Je génère un ENTIER Toutes les 5 minutes dans une autre fonction et je veux envoyer pour mettre à jour le tableau int[] series..

33
demandé sur Kiran 2013-04-09 14:38:40

14 réponses

La longueur d'un tableau est immuable en java. Cela signifie que vous ne pouvez pas modifier la taille d'un tableau une fois que vous l'avez créé. Si vous l'avez initialisé avec 2 éléments, sa longueur est 2. Vous pouvez cependant utiliser une collection différente.

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

Et avec une méthode wrapper

public void addMember(Integer x) {
    myList.add(x);
};
57
répondu flavian 2013-04-09 10:49:30

Essayez ceci

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;
}
43
répondu Evgeniy Dorofeev 2015-03-10 12:35:24

Si vous générez un ENTIER Toutes les 5 minutes, Mieux vaut utiliser collection. Vous pouvez toujours en sortir array, si nécessaire dans votre code.

Sinon, définissez le tableau assez grand pour gérer toutes vos valeurs à l'exécution (pas préféré cependant.)

11
répondu Sudhanshu Umalkar 2013-04-09 10:39:43

Vous devrez créer un nouveau tableau si vous voulez ajouter un index.

Essayez ceci:

public static void main(String[] args) {
    int[] series = new int[0];
    int x = 5;


    series = addInt(series, x);

    //print out the array with commas as delimiters
    System.out.print("New series: ");
    for (int i = 0; i < series.length; i++){
        if (i == series.length - 1){
            System.out.println(series[i]);
        }
        else{
            System.out.print(series[i] + ", ");
        }
    }
}

/ / ici, créez une méthode

public static int[] addInt(int [] series, int newInt){
    //create a new array with extra index
    int[] newSeries = new int[series.length + 1];

    //copy the integers from series to newSeries    
    for (int i = 0; i < series.length; i++){
        newSeries[i] = series[i];
    }
//add the new integer to the last index     
    newSeries[newSeries.length - 1] = newInt;



    return newSeries;

     }
7
répondu Didi Bui 2013-12-08 05:41:29

La taille d'un tableau ne peut pas être changé. Si vous voulez un plus grand tableau, vous devez créer un nouveau tableau.

Cependant, une meilleure solution serait d'utiliser une Liste (Tableau) qui peut croître selon vos besoins. La méthode ArrayList.toArray (T[] a) renvoie un tableau si vous devez utiliser un tableau dans votre application.

4
répondu Erik Pragt 2013-04-09 10:40:29

Comme d'autres l'ont suggéré, il vaut mieux utiliser la collection. Si Cependant, pour une raison quelconque, vous devez vous en tenir à array, Apache Commons ArrayUtils peut vous aider:

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};

Notez que la méthode add crée un nouveau tableau, copie le tableau donné et ajoute le nouvel élément à la fin, ce qui peut avoir un impact sur les performances.

4
répondu Michal B 2014-09-09 12:21:33

Vous pouvez aussi essayer ceci.

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;
}
4
répondu Jason Ivey 2016-04-05 23:38:22
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;
    }
}
2
répondu AmitG 2013-04-09 10:59:28
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;

}
2
répondu Lakshmi Prasanna 2015-05-11 07:31:59

Le ... ne peut être utilisé que dans JDK 1.5 ou version ultérieure. Si vous utilisez JDK 4 ou inférieur, utilisez ce code: '

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;
}

Sinon (JDK 5 ou supérieur):

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;
}

Bien sûr, comme beaucoup l'ont mentionné ci-dessus, vous pouvez utiliser un Collection ou ArrayList, ce qui vous permet d'utiliser le .add() méthode.

2
répondu HyperNeutrino 2015-05-22 00:21:34
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]);
        }
    } 
}
2
répondu Ankit Giri 2015-05-22 10:11:11

Similaire à Evgeniy:

int[] series = {4,2};

  add_element(3);
  add_element(4);
  add_element(1);


public void add_element(int element){
  series = Arrays.copyOf(series, series.length +1);
  series[series.length - 1] = element;
}
1
répondu tom 2015-01-03 11:31:29

Cela fonctionne pour moi:

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

De Cette façon, c'est simple, mais efficace.

1
répondu Herpy_Derp 2016-03-19 20:51:44

Int [] oldArray = {1,2,3,4,5};

    //new value
    int newValue = 10;

    //define the new array
    int[] newArray = new int[oldArray.length + 1];

    //copy values into new array
    for(int i=0;i < oldArray.length;i++)
        newArray[i] = oldArray[i];
    //another solution is to use 
    //System.arraycopy(oldArray, 0, newArray, 0, oldArray.length);

    //add new value to the new array
    newArray[newArray.length-1] = newValue;

    //copy the address to the old reference 
    //the old array values will be deleted by the Garbage Collector
    oldArray = newArray;
0
répondu Chandu D 2015-05-11 07:43:38