Wie kann ich Elemente dynamisch zu einem Java-Array hinzufügen?

In PHP können Sie Elemente wie folgt dynamisch zu Arrays hinzufügen:

$x = new Array(); $x[] = 1; $x[] = 2; 

Danach wäre $x ein Array wie folgt: {1,2} .

Gibt es eine Möglichkeit, etwas ähnliches in Java zu tun?

Sehen Sie sich java.util.LinkedList oder java.util.ArrayList an

 List x = new ArrayList(); x.add(1); x.add(2); 

Arrays in Java haben eine feste Größe, so dass Sie nicht “etwas am Ende hinzufügen können”, wie Sie es in PHP tun könnten.

Ein bisschen ähnlich dem PHP-Verhalten ist dies:

 int[] addElement(int[] org, int added) { int[] result = Arrays.copyOf(org, org.length +1); result[org.length] = added; return result; } 

Dann kannst du schreiben:

 x = new int[0]; x = addElement(x, 1); x = addElement(x, 2); System.out.println(Arrays.toString(x)); 

Aber dieses Schema ist schrecklich ineffizient für größere Arrays , da es jedes Mal eine Kopie des gesamten Arrays erstellt. (Und es ist tatsächlich nicht vollständig äquivalent zu PHP, da Ihre alten Arrays gleich bleiben).

Die PHP-Arrays sind in der Tat die gleichen wie eine Java-HashMap mit einem hinzugefügten “Max-Schlüssel”, damit sie wissen, welcher Schlüssel als nächstes zu verwenden ist und eine seltsame Iterationsreihenfolge (und eine seltsame Äquivalenzrelation zwischen Integer-Schlüsseln und einigen Strings). Verwenden Sie für einfache indizierte Sammlungen besser eine Liste in Java, wie die anderen Beantworter vorgeschlagen haben.

Wenn Sie die Verwendung von List vermeiden möchten, sollten Sie die Verwendung von Neuimplementationen von Auflistungen für primitive Typen in Betracht ziehen, die Arrays intern verwenden, aber nicht bei jeder Änderung kopieren, wenn das interne Array voll ist (genau wie ArrayList). (Ein schnell gegoogeltes Beispiel ist diese IntList-class .)

Guava enthält Methoden, die solche Wrapper in Ints.asList , Longs.asList usw. Longs.asList .

Apache Commons verfügt über eine ArrayUtils- Implementierung, um ein Element am Ende des neuen Arrays hinzuzufügen:

 /** Copies the given array and adds the given element at the end of the new array. */ public static  T[] add(T[] array, T element) 

Sie können eine ArrayList und dann die toArray() -Methode verwenden. Aber abhängig von dem, was Sie tun, brauchen Sie vielleicht gar kein Array. Schau dir an, ob Lists mehr das sind, was du willst.

Siehe: Java List Tutorial

Ich habe diese Frage sehr oft im Internet gesehen und meiner Meinung nach haben viele Leute mit hohem Ansehen diese Fragen nicht richtig beantwortet. Daher möchte ich hier meine eigene Antwort express.

Zuerst sollten wir berücksichtigen, dass es einen Unterschied zwischen array und arraylist .

Die Frage fragt nach dem Hinzufügen eines Elements zu einem Array und nicht ArrayList


Die Antwort ist ziemlich einfach. Es kann in 3 Schritten durchgeführt werden.

  1. Konvertieren Array in eine Arraylist
  2. Fügen Sie der ArrayListe ein Element hinzu
  3. Konvertieren Sie die neue ArrayList in das Array zurück

Hier ist das einfache Bild davon Bildbeschreibung hier eingeben

Und schließlich ist hier der Code:

Schritt 1:

 public List convertArrayToList(String[] array){ List stringList = new ArrayList(Arrays.asList(array)); return stringList; } 

Schritt 2:

 public List addToList(String element,List list){ list.add(element); return list; } 

Schritt 3:

 public String[] convertListToArray(List list){ String[] ins = (String[])list.toArray(new String[list.size()]); return ins; } 

Schritt 4

 public String[] addNewItemToArray(String element,String [] array){ List list = convertArrayToList(array); list= addToList(element,list); return convertListToArray(list); } 

Wahrscheinlich möchten Sie dafür eine ArrayList verwenden – für eine dynamisch große Array-ähnliche Struktur.

Sie können Elemente dynamisch zu einem Array hinzufügen, indem Sie Collection-Frameworks in JAVA verwenden. collection Framework funktioniert nicht für primitive Datentypen.

Dieses Collection-Framework wird im Paket “java.util. *” Verfügbar sein

Wenn Sie beispielsweise ArrayList verwenden,

Erstellen Sie ein Objekt und fügen Sie dann eine Anzahl von Elementen hinzu (beliebiger Typ wie String, Integer … usw.)

 ArrayList a = new ArrayList(); a.add("suman"); a.add(new Integer(3)); a.add("gurram"); 

Jetzt wurden 3 Elemente zu einem Array hinzugefügt.

wenn Sie irgendwelche der hinzugefügten Elemente entfernen möchten

 a.remove("suman"); 

erneut, wenn Sie ein Element hinzufügen möchten

 a.add("Gurram"); 

Die Array-Größe nimmt also dynamisch zu / ab.

Verwenden Sie eine ArrayList oder jonglieren Sie mit Arrays, um die Array-Größe automatisch zu erhöhen.

Behalte eine Zählung, wo du dich im primitiven Array befindest

 class recordStuff extends Thread { double[] aListOfDoubles; int i = 0; void run() { double newData; newData = getNewData(); // gets data from somewhere aListofDoubles[i] = newData; // adds it to the primitive array of doubles i++ // increments the counter for the next pass System.out.println("mode: " + doStuff()); } void doStuff() { // Calculate the mode of the double[] array for (int i = 0; i < aListOfDoubles.length; i++) { int count = 0; for (int j = 0; j < aListOfDoubles.length; j++) { if (a[j] == a[i]) count++; } if (count > maxCount) { maxCount = count; maxValue = aListOfDoubles[i]; } } return maxValue; } } 

Dies ist eine einfache Möglichkeit, zu einem Array in Java hinzuzufügen. Ich habe ein zweites Array zum Speichern meines ursprünglichen Arrays verwendet und dann ein weiteres Element hinzugefügt. Danach übergab ich dieses Array an das ursprüngliche zurück.

  int [] test = {12,22,33}; int [] test2= new int[test.length+1]; int m=5;int mz=0; for ( int test3: test) { test2[mz]=test3; mz++; } test2[mz++]=m; test=test2; for ( int test3: test) { System.out.println(test3); } 

In Java ist die Größe des Arrays festgelegt, aber Sie können Elemente dynamisch zu einem Array fester Größe hinzufügen, indem Sie den Index und die for-Schleife verwenden. Bitte finden Sie ein Beispiel unten.

 package simplejava; import java.util.Arrays; /** * * @author sashant */ public class SimpleJava { /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here try{ String[] transactions; transactions = new String[10]; for(int i = 0; i < transactions.length; i++){ transactions[i] = "transaction - "+Integer.toString(i); } System.out.println(Arrays.toString(transactions)); }catch(Exception exc){ System.out.println(exc.getMessage()); System.out.println(Arrays.toString(exc.getStackTrace())); } } }