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
..
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);
};
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;
}
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.)
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;
}
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.
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.
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;
}
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;
}
}
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;
}
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.
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]);
}
}
}
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;
}
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.
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;