Wie erstellt man eine Objekt-Liste?

MasterEvil

Erfahrenes Mitglied
Hiho, ich probiere schon die ganze Zeit mit ArrayLists und HashSets etc rum aber ich bekomm nicht das hin was ich brauche.

gewöhnliches Beispiel:

class Person {
private string Name;
}

class Personen{
Liste oder Collection von Person

Liste[1].Name = "blub";
}

Das Problem ist, wenn ich eine Liste nehme kann ich auch irgendwelche anderen Objekte hinzufügen, als Rückgabe hab ich dann auch kein Person-Objekt was ich direkt über einen Index ansprechen kann.
Was kann man denn dafür benutzen? Solche Objektlisten braucht man doch ständig da muss es doch schon etwas bracuhbares für geben oder?


[EDIT]
Vieleicht noch mein aktueller Versuch zur besseren Verständlichkeit, das mit dem Cast in Artikel stört mich am meisten.
Code:
import java.util.HashSet;

public class ArtikelListe extends HashSet {
	
	private static final long serialVersionUID = 1L;

	public void addArtikel(artikel m_Artikel) {
		this.add(m_Artikel);
	}
	
	public artikel getArtikelByNumber(String m_number) {
		artikel foundArtikel = null;
		
		while(this.iterator().hasNext()) {
			foundArtikel = (artikel)this.iterator().next();
			if(foundArtikel.getArtikelnummer() == m_number) break;
			else foundArtikel = null;
		}
		
		return foundArtikel;
		
	}
	
	public void test() {
		ArtikelListe testblub = new ArtikelListe();
		
		artikel blub = testblub.getArtikelByNumber("AB-12");
		blub.getAnbindungsnummer();
	}

}
 
Zuletzt bearbeitet:
MasterEvil hat gesagt.:
gewöhnliches Beispiel:
Code:
class Person {
   private string Name;
}

class Personen{
   Liste oder Collection von Person 

   Liste[1].Name = "blub";
}
Das Problem ist, wenn ich eine Liste nehme kann ich auch irgendwelche anderen Objekte hinzufügen, als Rückgabe hab ich dann auch kein Person-Objekt was ich direkt über einen Index ansprechen kann.
Was kann man denn dafür benutzen? Solche Objektlisten braucht man doch ständig da muss es doch schon etwas bracuhbares für geben oder?

Moin,
zunächst einmal:
Sicher kannst Du einer Liste beliebige Objekte hinzufügen. Es liegt in Deiner Verantwortung, sie dann wieder richtig auszulesen (Stichwort casten) oder von vornherein nur Objekte gleichen Typs hinzuzufügen.
Weiterhin meine ich, dass in Java 5 letzteres sichergestellt werden kann durch

ArrayList<Person> alPersonen = new ArrayList();

oder

ArrayList<Person> alPersonen = new ArrayList()<Person>;

oder so ähnlich, musst mal in der API schauen. Dann ist auch beim Auslesen kein casten mehr nötig afaik.
 
Jep, die Lösung von Thomas würde ich auch hernehmen. Mit Templates wird nämlich nur dieser vorgegbene Typ, in deinem Fall Person, zurückgeliefert. Hinzukommt, dass auch nur dieser Typ in die Liste eingefügt werden kann. Mit dieser Lösung ersparst du dir einen Haufen Arbeit :p

Gruß
TOM
 
Thomas Darimont hat gesagt.:
Hallo!

Besser:
Code:
 List<Person> persons = new ArrayList<Person>();
;)

Gruss Tom

Jaja, elender <self-censored> ;)
Ich/Wir nutze(n) noch kein Java 5, deshalb bin ich mit der Syntax nicht sonderlich vertraut.
Ob List oder ArrayList dürfte in diesem Fall keinen großen Unterschied ausmachen, außer dass man sich damit an die Empfehlungen für effektive Java-Programmierung hält und gewöhnt. ;)
 
Das ganze sieht schonmal super aus, ich bekomme aber noch einen Fehler bei der Klammer-Auf ganz am Ende.
Syntaxerror on token "(", Expression expected after this token

Code:
import java.util.ArrayList;
import java.util.List;

public class PersonenListe {
	private List<Person> Personen = new ArrayList[]<Person>(); 
}

Also irgendwas wird erwartet, ich hab aber bei meiner Person Klasse keinen Konstruktor oder sonstige Übergabewert?

Sorry, Eclipse hatte wohl noch irgendwo ne Referenz oder so gespeichert, hab die Klasse komplett neu erstellt und jetzt geht es einwandfrei. Besten Dank für eure Hilfe!
 
Zuletzt bearbeitet:
hi!

Code:
private List<Person> Personen = new ArrayList[]<Person>();

geht das mit den [] wirklich nach der ArrayList? Interessiert mich nur, ich hab selbst noch nicht mit Java Templates gearbeitet, aber das kommt mir optisch einfach komisch vor :p

Gruß
TOM
 
Zurück