In ArrayList Daten verändern

kuzdu

Aktives Mitglied
Hallo,

ich arbeite gerade an einer Adressverwaltung. Die Adresse wird in einer Arraylist gespeichert und der Anwender soll die Möglichkeit haben einzelne Daten aus seiner Adresse zu verändern.

Die Daten werden so gespeichert:


Java:
String Adresse = "Vorname"+ " " +"Nachname"+ " " +"Straße"+ " " +"PLZ"+ " " +"ORT"+ "eindeutige ID";
		
AdressListe.add(Adresse);

Im Internet finde ich nur immer Codebeispiele wo der String in der ArrayList nur ein "Wort" enthält. Ein einzelnes Wort zu ändern ist einfach. Aber in meinem String sind ja gleich 5 verschiedene Daten. Wenn ich also z.B. nur meinen Nachnamen ändern möchte, soll der Rest bestehen bleiben und nicht explizit vom User erneut eingegeben werden müssen.

Ich suche den Datensatz, der verändert werden soll per indexOf:

Java:
 for (int i = 0; i <AdressListe.size(); i++) {
	    
String name = (String)AdressListe.get(i);

if(name.indexOf("eindeutige ID") >= 0) {
	    		
	    		//Hier Veränderung von nur ausgewählten Daten (z.B. nur Nachnamen verändern) 


	    	}
}

Geht mein Vorhaben überhaupt auf meine Art und Weise?
Welche wäre eine einfacherer bzw. bessere Möglichkeit mein Problem zu lösen?

Im Internet habe ich nichts brauchbares gefunden, bzw. nicht die Möglichkeit wie man einen "komplexen" String verändert.


Gruß

PS: Falls was unklar ist, einfach melden bitte :)

PPS: Oder muss ich mit dem String (name) arbeiten und Trennzeichen setzen oder so etwas in der Art?
 
N

nillehammer

Gast
Der bessere Weg wäre, eine Klasse Adresse zu implementieren, die alle Strings enthält, etwa so:
Java:
public class Adresse {

   private String name;
  
   public String getName() {
     return this.name;
   }

   public void setName(final String name) {
    this.name = name;
  }

   //... alle weiteren Strings entsrpechend
}
Dann kannst Du über die Setter die Werte ändern, die Du möchtest. Für die Ausgabe des Gesamtstrings implementierst Du am besten eine eigene Methode, die Du dann aufrufst.

P.S. Und die Liste darf auch gern Generics benutzen, also so:
Java:
List<Adresse> adressListe = new ArrayList<Adresse>();
//... hier die ganzen Adressen adden.
Adresse erste = adressListe.get(0);
Wie Du siehst, sparst Du Dir damit den Cast.

P.P.S Klassennamen sollten mit Großbuchstaben beginnen, Variablennamen mit Kleinbuchstaben.
 
Zuletzt bearbeitet von einem Moderator:

AquaBall

Top Contributor
Deine Art die Daten zu "speichern" in dem du einen String zusammenhängst, ist so ziemlich die katastrophalste Vorgangsweise die man sich vorstellen kann!!!

Wenn das dein Ernst ist, dann ist das vermutlich dein aller-erster Kontakt mit Datenstrukturen!
Du machst genau das Gegenteil, von dem was Programme erreichen wollen: STRUKTUR und gezielten Zufgriff auf Information, (statt alles in eine Topf zu werfen und kräftig umrühren.)

Leg das Programm nochmal weg, und lies dich in classen und Datenstrukturen ein.
Und beschäftige dich mal mit der Frage "Was ist eine Informationseinheit"?

Grob gesagt: Alles was einen eigene Bezeichnung hat ist eine eigenen Einheit: (Vorname, Nachname, Straße, Postleitzahl ...)
Da gehört jedes in eine eigene Variable!
Vorzugsweise in eine Klasse Adresse, die all dies eVariablen als Eigenschaft beinhaltet.
Später in eine Datenbank, die MUSST du so strukturieren.

Nicht ohne Grund bestehen in den meisten Beispielen
Code:
ArrayList aus nur ein "Wort"
. Weil das EINE Informationseinheit ist!
 
Zuletzt bearbeitet:

2AndAHalfBit

Aktives Mitglied
Grob gesagt: Alles was einen eigene Bezeichnung hat ist eine eigenen Einheit: (Vorname, Nachname, Straße, Postleitzahl ...)
Da gehört jedes in eine eigene Variable!
Vorzugsweise in eine Klasse Adresse, die all dies eVariablen als Eigenschaft beinhaltet.
Später in eine Datenbank, die MUSST du so strukturieren.

Das mit dem Muss ist ein Gerücht, ich kenne Firmen die geben nix auf Normalisierung und einen String in einer DB speichern, das geht auch....

Nein, mal im Ernst. Aqua hat schon recht, Deine Softwarearchitektur ist in dem Fall nicht ideal gewählt.
Du solltest in der Tat eine Klasse erstellen, die Deine Daten hält (z.B. Addresse) und Objekte dieser Klasse in deine Arraylist einfügen. Soweit ich weiss speichert eine ArrayList nur Referenzen, Du kannst Dir also die Referenz aus der Liste holen und über getter/setter in Deiner Klasse Addresse die alle Attribute neu setzen wie Du willst.

Das hat darüber hinaus den Vorteil, dass Du Dir keine Syntax für Deinen String überlegen musst und macht Dein Programm besser anpassbar.

Jetzt zu Deinem Problem: Ich weiß nicht genau wie eine ArrayList reagiert, aber ich vermute mal, dass das Problem sein wird, das Strings immutable sind. Das beudetet, dass sie nicht verändert werden können. Initialisierst Du einen String, und änderst ihn dann, entsteht ein neuer String und dieser neue String ist ein neues Objekt auf einem neuen Speicher (= eine neue Referenz). An der Stelle weiss ich aber nicht, wie die Arraylist darauf reagieren wird. Kann ich aber heute abend mal ausprobieren...
 

kuzdu

Aktives Mitglied
@nillehammer: Vielen Dank hat geklappt.
@AquaBall: Wenn ich deinen Beitrag lese, komme ich mir echt(!) dumm vor :D Aber recht hast. Bin wieder etwas klüger und lern ja noch ;)

Falls irgendwelche anderen Leute hier mal drüber stolpern, hier ist meine jetzige Lösuung, ist zwar noch etwas roh, sollte es allerdings wohl tun:

Java:
//In der Hauptklasse

ArrayList<String> adressList = new ArrayList<String>();
			
			Adresse a = new Adresse();   //Zugriff auf Klasse Adresse
			
			a.setName("buh");
			a.setNachname("guh");
			
			
			
			
			adressList.add(a.toString());
			
		
			System.out.println(adressList.get(0));
			
			a.setName("neu");
			
			  adressList.set(0, a.toString());
		
			
			System.out.println(adressList.get(0));

-----------------------------------------------------------
//Klassse Adresse


public class Adresse {


	private String name;
	private String nachname;
	private String all;
	


	public void setName(String name) {
		this.name = name;
	}
	
	public void setNachname(String nachname) {
		this.nachname = nachname;
	}
	
	public String getName() {
		return this.name;
	}
	
	public String getNachname() {
		return this.nachname;
	}
	
	
	public String toString() {
	return this.all = name + " " + nachname;
	}
	
}
 

AquaBall

Top Contributor
@nillehammer: Vielen Dank hat geklappt.
@AquaBall: Wenn ich deinen Beitrag lese, komme ich mir echt(!) dumm vor :D Aber recht hast. Bin wieder etwas klüger und lern ja noch ;)

Dumm würd ich nie sagen zu einem Anfänger. Das Gefühl brauchts du dir nicht geben!
Dazu ist ja das Anfängerforum auch da!
Dumm ist erst, wenn man aus angeboter Hilfe nicht lernen will.

Du hast ja den ersten wesentlichen Schritt schon geschafft!
Jetzt machst du noch den 2., dann bist du bei 'Klassen' angekommen:
Dein
Code:
ArrayList
soll natürlich keien
Code:
Strings
beinhalten, da wärst du nämlcih ähnlich weit wie gestern, sondern soll
Code:
Adressen
verwalten. Also

Java:
//In der Hauptklasse
ArrayList<Adresse> adressList = new ArrayList<Adresse>();		// !!!
			
			Adresse a = new Adresse();   //Zugriff auf Klasse Adresse
			
			a.setName("buh");
			a.setNachname("guh");
			adressList.add(a);		// !!! Nicht String!
// Der SInn ist: eben KEINEN String daraus machen, sondern Daten "im Original" lassen, 
// und nur für Ausgaben "menschen-gerecht" in einen String aufbereiten:
			System.out.println(adressList.get(0).toString());
			
			a.setName("neu");
			 adressList.set(0, a);		// !!! Nicht String
			System.out.println(adressList.get(0).toString());

-----------------------------------------------------------
//Klassse Adresse

public class Adresse { 		// Das schaut schon recht profesionell aus, gratuliere!

	private String name;
	private String nachname;
// --	private String all;		// Unnötig, und wegen Speicher, Redundanz, ... nicht sinnvoll.

	public void setName(String name) { this.name = name; }
	public void setNachname(String nachname) { this.nachname = nachname; }

	public String getName() { return this.name; }
	public String getNachname() { return this.nachname; }
	
	@Override			// ... zu Klarheit
	public String toString() {
		return name + " " + nachname;
	}
}
 
Zuletzt bearbeitet:
N

nillehammer

Gast
[JAVA=14]
adressList.set(0, a); // !!! Nicht String
[/code]
Das Kommando ist überflüssig. Mit der Variable a hat man noch die Referenz auf die Adresse, die auch in der Liste gespeichert ist. D.h. die Änderung gilt auch für die in der Liste gespeicherte Adresse. Es handelt sich dabei nämlich um das selbe (im Sinne von identische) Objekt. Man braucht die veränderte Adresse nicht nochmal an die selbe Stelle zu speichern.
 

AquaBall

Top Contributor
[JAVA=14]
adressList.set(0, a); // !!! Nicht String
[/code]
Das Kommando ist überflüssig. Mit der Variable a hat man noch die Referenz auf die Adresse, die auch in der Liste gespeichert ist. D.h. die Änderung gilt auch für die in der Liste gespeicherte Adresse. Es handelt sich dabei nämlich um das selbe (im Sinne von identische) Objekt. Man braucht die veränderte Adresse nicht nochmal an die selbe Stelle zu speichern.

Hast du natürlich absolut recht!
Mag TO auch nun evtl verwirren, dass er mit
Code:
 a.setName("neu");
schon den Wert im ArrayList verändert, (Weil's ja keine Liste VON Objekten ist, sondern eine Liste AUF REFERENZEN von Objekten.)

Ist also nur nötig/gerechtfertigt, wenn das Objekt a gegen das Objekt b ersetzt werden soll.

Java:
Adresse a = new Adresse();
a.setName("buh");
a.setNachname("guh");
adressList.add(a);
System.out.println(adressList.get(0).toString());

a.setName("new");
System.out.println(adressList.get(0).toString());      // !!! Bereits Ausgabe der neuen Daten!

Adresse b = new Adresse();
b.setName("foo");
b.setName("bar");
adressList.set(0, b);      // !!! Objekt komplett ersetzt!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Z Java ArrayList speichert falsche Daten ab bzw. gibt falsche Daten aus? Java Basics - Anfänger-Themen 42
P Schiebefix - ArrayList überschreibt Daten Java Basics - Anfänger-Themen 3
L Daten aus ArrayList in Datenbank durchsuchen Java Basics - Anfänger-Themen 5
K HashMap mit Daten aus ArrayList befüllen Java Basics - Anfänger-Themen 14
M Daten in ArrayList löschen Java Basics - Anfänger-Themen 15
R Daten aus ArrayList lassen sich nicht auslesen Java Basics - Anfänger-Themen 12
B ArrayList.clear - Daten in allen Referenzen weg Java Basics - Anfänger-Themen 2
R ArrayList mit Daten füllen Java Basics - Anfänger-Themen 12
E Arraylist mit Daten aus Vector füllen Java Basics - Anfänger-Themen 7
G Daten in ArrayList speichern Java Basics - Anfänger-Themen 44
G Object Daten aus Arraylist auslesen Java Basics - Anfänger-Themen 12
krgewb ArrayList allgemein halten Java Basics - Anfänger-Themen 6
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
J ArrayList in 2D-Array konvertieren. Java Basics - Anfänger-Themen 48
E Arrays in einer ArrayList miteinander vergleichen Java Basics - Anfänger-Themen 12
String in ArrayList umwandeln Java Basics - Anfänger-Themen 1
F Arraylist<String>Ein Wort pro Zeile Java Basics - Anfänger-Themen 6
J ArrayList vergleichen im spiel Mastermind Java Basics - Anfänger-Themen 2
Mugetsu35 ArrayList Update ohne Index Java Basics - Anfänger-Themen 6
W Objekte einer ArrayList in txt-datei schreiben mit Paths? Java Basics - Anfänger-Themen 2
W if-Abfrage bei ArrayList-Methodenaufrufen - Wie löse ich das? Java Basics - Anfänger-Themen 6
W ArrayList und toString Java Basics - Anfänger-Themen 17
volcanos Addition -> List<Integer> mit Arrays.asList() versus List<Integer>ArrayList<>() Java Basics - Anfänger-Themen 14
ArrayList mit unbekannter Menge an Arrays die Arrays vergleichen Java Basics - Anfänger-Themen 9
M 2d ArrayList durchgehen Java Basics - Anfänger-Themen 2
Blkckroll45 Arraylist Java Basics - Anfänger-Themen 6
H Interface Wieso "List<String> list = new ArrayList<>[…]" Java Basics - Anfänger-Themen 4
berserkerdq2 Geht collections.sort bei allen? Linkedhashset, ArrayList, HashSet etc. Java Basics - Anfänger-Themen 4
R Methoden Werte einer ArrayList als Parameter übergeben. Java Basics - Anfänger-Themen 4
L Dauerhaftes Speichern einer Eingabe bei einer ArrayList Java Basics - Anfänger-Themen 26
D Arraylist mit Komplexen Datentyp Java Basics - Anfänger-Themen 3
H Kompliziertes Sortieren einer ArrayList mit Objekten(Sortieren nach X und Y) Java Basics - Anfänger-Themen 11
T Permanentes speichern von Objekten in einer ArrayList Java Basics - Anfänger-Themen 6
volcanos List & ArrayList nach Familiennamen abfragen Java Basics - Anfänger-Themen 57
M static ArrayList in non-static Java Basics - Anfänger-Themen 12
berserkerdq2 Ich gebe eine ArrayList als List zurück per MEthode, wie kann ich nun aber die ArrayList speichern? Java Basics - Anfänger-Themen 46
M ArrayList<TreeNode<T>> fortlaufende Nummerierung der Elemente Java Basics - Anfänger-Themen 5
B Bungeecord | ProxiedPlayer wird nicht in ArrayList hinzugefügt Java Basics - Anfänger-Themen 1
S ArrayList Username und passwort mit JTextField eingaben abgleichen Java Basics - Anfänger-Themen 10
F Werte in einer Arraylist Zählen Java Basics - Anfänger-Themen 2
F Erste Schritte Zahlenreihe von Arraylist in 3erBlöcke sortiert in neue Arraylist Java Basics - Anfänger-Themen 2
M ArrayList mit einer Schleife befüllen Java Basics - Anfänger-Themen 2
F Methode ArrayList mit Eingabewert Java Basics - Anfänger-Themen 2
J ArrayList add methode selbst programmieren Java Basics - Anfänger-Themen 10
K Erste Schritte Wie schnell ist LinkedHashMap im Vergleich zur ArrayList, wenn alle Entries durchlaufen werden? Java Basics - Anfänger-Themen 47
thobren jtable arraylist Java Basics - Anfänger-Themen 12
N Exception beim Verwenden von Arraylist? Java Basics - Anfänger-Themen 10
Zeppi OOP ArrayList Java Basics - Anfänger-Themen 2
P ArrayList Java Basics - Anfänger-Themen 4
L ArrayList auf 4 Elemente begrenzen Java Basics - Anfänger-Themen 56
C ArrayList sortieren nach bestimmten Buchstaben in den Wörtern Java Basics - Anfänger-Themen 13
S Arraylist<Object> mit verschiedenen Objects ausgeben Java Basics - Anfänger-Themen 3
J ArrayList auf bereits vorhanden eintrag prüfen Java Basics - Anfänger-Themen 5
M For Schleife/ArrayList Java Basics - Anfänger-Themen 12
L ArrayList<String> --> double[] array Java Basics - Anfänger-Themen 18
L Längstes Element einer ArrayList ausgeben Java Basics - Anfänger-Themen 9
S Aus verschachtelter ArrayList auf einen Wert zugreifen Java Basics - Anfänger-Themen 4
L Methoden ArrayList Werte hinzufügen und löschen Java Basics - Anfänger-Themen 32
M ArrayList in GUI ausgeben Java Basics - Anfänger-Themen 1
J Nur bestimmter Typ aus der ArrayList ausgeben. Java Basics - Anfänger-Themen 9
Bademeister007 Hallo Leute ich hab eine Frage zur ArrayList Java Basics - Anfänger-Themen 8
Bademeister007 Operatoren Alle Zahlen einer ArrayList die durch 5 teilbar ist Java Basics - Anfänger-Themen 2
S Objekt aus Arraylist in andere Arraylist kopieren? Java Basics - Anfänger-Themen 2
C Sortieren einer ArrayList Java Basics - Anfänger-Themen 2
krgewb ArrayList von ArrayList Java Basics - Anfänger-Themen 2
R ArrayList Problem Java Basics - Anfänger-Themen 6
jonny_2k12 Wie kann ich eine ArrayList aus einer Klasse in eine andere übergeben? Java Basics - Anfänger-Themen 21
O Namen (mit Umlauten und ß) in einer ArrayList suchen Java Basics - Anfänger-Themen 5
N Typebound Objekte einer Arraylist hinzufügen Java Basics - Anfänger-Themen 7
R Methoden ArrayList clonen wirft exception Java Basics - Anfänger-Themen 3
S ArrayList in andere Klasse übernhemen Java Basics - Anfänger-Themen 5
M Letztes Element einer ArrayList Java Basics - Anfänger-Themen 12
B Objektverwaltung mit ArrayList in einer seperaten Klasse Java Basics - Anfänger-Themen 24
I Sortiert eine HashMap nicht gleich wie eine ArrayList? Java Basics - Anfänger-Themen 1
I ArrayList erstellen innerhalb einer Zeile? Java Basics - Anfänger-Themen 3
L Iterieren durch eine ArrayList. Integer Array wird übergeben Java Basics - Anfänger-Themen 17
V Collections ArrayList mit Comparator sortieren Java Basics - Anfänger-Themen 16
D Collections Arrays in ArrayList abspeichern Java Basics - Anfänger-Themen 6
F java.util.ArrayList Java Basics - Anfänger-Themen 3
M ArrayList - Objekt kopieren und ändern Java Basics - Anfänger-Themen 11
M Zugriff auf eine ArrayList in einer anderen Klasse Java Basics - Anfänger-Themen 4
P Arraylist zu einem Array bringen mit Verschachtelung Java Basics - Anfänger-Themen 11
N Methode mit einer Arraylist Java Basics - Anfänger-Themen 106
I ArrayList - Methode zum Speichern eines Eintrags in einer Datei Java Basics - Anfänger-Themen 17
H ArrayList Java Basics - Anfänger-Themen 7
D public ArrayList(Collection<? extends E> c); Java Basics - Anfänger-Themen 2
M JTextField in ArrayList speichern Java Basics - Anfänger-Themen 4
C ArrayList mit return zurückgeben Java Basics - Anfänger-Themen 13
K Zahlenfolge ArrayList Java Basics - Anfänger-Themen 3
C Erste Schritte Frage zur ArrayList Java Basics - Anfänger-Themen 15
I Klassen Eine ArrayList<Long>, die sich automatisch sortiert Java Basics - Anfänger-Themen 20
F Array in ArrayList ablegen Java Basics - Anfänger-Themen 3
V ArrayList Java Basics - Anfänger-Themen 1
Z Runden Arraylist Java Basics - Anfänger-Themen 9
X Frage zur einer ArrayList in einer ArrayList Java Basics - Anfänger-Themen 5
F Arraylist als Pfadausgabe Java Basics - Anfänger-Themen 10
L Objekt aus Textdatei in ArrayList speichern Java Basics - Anfänger-Themen 4
M Problem mit ArrayList Java Basics - Anfänger-Themen 32
X Objekte einer ArrayList richtig ausgeben? Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben