2016-07-29 19 views
0

Ich habe viele Beiträge über das Aktualisieren eines bestimmten Wertes in einer ArrayList gelesen, wenn die ArrayList eine einzelne Spalte ist. In meinem Fall habe ich eine mehrspaltige ArrayList, die mit dem folgenden JAVA-Code gemacht wird.Wie man einen Wert in einer ArrayList (mit mehreren Spalten) durch einen neuen Wert ersetzt, in JAVA

Class A{ 
      private List<double[]> ArrayList; 

      double[] _array = {0.0, 1.0}; 
      ArrayList.add(_array); 

      _array = {2.0, 5.0}; 
      ArrayList.add(_array); 

      _array = {3.0, 8.0}; 
      ArrayList.add(_array); 
} 

Dann meine Arraylist aussieht, {0.0, 1.0} {2.0, 5.0} {3.0, 8.0}

Mein Problem ist: Ich habe versucht, die Nummer 8.0 mit einer neuen Nummer zu ersetzen, . Und ich glaube nicht, dass ich "ArrayList.set (2, 8.0)" verwenden kann, um das Ziel zu erreichen, da es nur gut funktioniert, wenn die ArrayList eine einzelne Spalte hat.

Alle Feedback und Kommentare sind willkommen.

+0

Hallo zusammen, die andere kurze Frage, wenn ich den ähnlichen Code wie vom Benutzer 3334250 geschrieben, z. arrayList.set (0, neu double [] {arrayList.get (0) [3], arrayList.get (0) [3] + arrayList.get (0) [1]}); Was passiert ist: Obwohl der Wert (des Index 3) erfolgreich aktualisiert wurde, wurde die Größe meiner ArrayList auf 2 (von 8, was die ursprüngliche Größe ist) geändert. Ich kann den Grund nicht herausfinden und hast du irgendwelche Ideen? – Luistock

Antwort

0

Sie müssen .get() aufrufen, um das Array zu erhalten, das Sie suchen.

Sie können dann einen einzelnen Wert im Array festlegen.

1

Sie sollten zuerst das Array aus der ArrayList auswählen.

double[] _array = ArrayList.get(1); 
_array[1] = 2; 
+0

Danke für das Teilen dieses Tsadkan, und ja, Ihre Lösung ist richtig. – Luistock

0

Hier ist ein Einzeiler den Wert von 8,0 bis 4,4

arrayList.set(2, new double[]{arrayList.get(2)[0], 4.4}); 

Voll Beispiel zu ändern:

public static void main(String[] args) { 
    List<double[]> arrayList = new ArrayList<double[]>(); 
    arrayList.add(new double[]{0.0, 1.0}); 
    arrayList.add(new double[]{2.0, 5.0}); 
    arrayList.add(new double[]{3.0, 8.0}); 

    System.out.println("Before:"); 
    for (double[] d : arrayList) { 
     System.out.println(d[0] + ", " + d[1]); 
    } 

    arrayList.set(2, new double[]{arrayList.get(2)[0], 4.4}); 

    System.out.println("After:"); 
    for (double[] d : arrayList) { 
     System.out.println(d[0] + ", " + d[1]); 
    } 
} 

Ausgang:

Before: 
0.0, 1.0 
2.0, 5.0 
3.0, 8.0 
After: 
0.0, 1.0 
2.0, 5.0 
3.0, 4.4 
+0

Hallo user3334250, vielen Dank für das Teilen, und das ist genau das, was ich brauche. – Luistock

+0

Hallo nochmal, die andere kurze Frage, d.h. wenn ich den ähnlichen Code, z. arrayList.set (0, neu double [] {arrayList.get (0) [3], arrayList.get (0) [3] + arrayList.get (0) [1]}); Was passiert ist: Obwohl der Wert (des Index 3) erfolgreich aktualisiert wurde, wurde die Größe meiner ArrayList geändert, um 2 (von 8 das ist die ursprüngliche Größe). Ich kann den Grund nicht herausfinden und hast du irgendwelche Ideen? – Luistock