Voulez-vous ajouter ou ajouter des éléments à un tableau existant
int[] series = {4,2};
maintenant, je veux mettre à jour la série de manière dynamique avec les nouvelles valeurs que j'envoie.
comme si j'envoyais 3 séries de mises à jour en tant que int[] series = {4,2,3};
à nouveau si j'envoie 4 séries de mises à jour en tant que int[] series = {4,2,3,4};
encore une fois si j’envoie 1 série de mises à jour comme int[] series = {4,2,3,4,1};
ainsi de suite
Comment faire????
Je génère un entier toutes les 5 minutes dans une autre fonction et souhaite envoyer pour mettre à jour le tableau int[] series
.
La longueur d'un tableau est immuable en Java. Cela signifie que vous ne pouvez pas changer la taille d'un tableau une fois que vous l'avez créé. Si vous l'avez initialisé avec 2 éléments, sa longueur est de 2. Vous pouvez toutefois utiliser une collection différente.
List<Integer> myList = new ArrayList<Integer>();
myList.add(5);
myList.add(7);
Et avec une méthode d'emballage
public void addMember(Integer x) {
myList.add(x);
};
essaye ça
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, utilisez plutôt la collecte. Vous pouvez toujours en obtenir un tableau, si cela est requis dans votre code.
Sinon, définissez un tableau assez grand pour gérer toutes vos valeurs au moment de l'exécution (pas préférable cependant).
Comme d'autres l'ont suggéré, il vaut mieux utiliser la collection. Si pour une raison quelconque vous devez cependant vous en tenir à un tableau, 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 une incidence sur les performances.
Vous devrez créer un nouveau tableau si vous souhaitez ajouter un index.
Essaye ça:
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ée 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;
}
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;
}
La taille d'un tableau ne peut pas être modifiée. Si vous voulez un plus grand tableau, vous devez créer un nouveau tableau.
Cependant, une meilleure solution consisterait à utiliser une liste (matricielle) pouvant s’épanouir au fur et à mesure de vos besoins. La méthode ArrayList.toArray (T [] a) renvoie un tableau si vous devez utiliser un tableau dans votre application.
Le ...
ne peut être utilisé que dans JDK version 1.5 ou ultérieure. Si vous utilisez JDK 4 ou une version inférieure, 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 un ArrayList
, ce qui vous permet d'utiliser la méthode .add()
.
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]);
}
}
}
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;
}
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.
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;
}
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;