package test;importjava.util.LinkedList;importjava.util.List;publicclassA{publicstaticvoidmain(String[] args){List list =newLinkedList<Person>();
list.add(newPerson(15,"Peter"));
list.add(newPerson(80,"Ralf"));
list.add(newPerson(36,"Zwegat"));// irgendwo andersPerson ralf =newPerson(80,"Ralf");System.out.println(list.indexOf(ralf));}}classPerson{privateString name;privateint alter;publicPerson(int alter,String name){super();this.alter = alter;this.name = name;}publicStringgetName(){return name;}publicvoidsetName(String name){this.name = name;}publicintgetAlter(){return alter;}publicvoidsetAlter(int alter){this.alter = alter;}@OverridepublicinthashCode(){finalint prime =31;int result =1;
result = prime * result + alter;
result = prime * result +((name ==null)?0: name.hashCode());return result;}@Overridepublicbooleanequals(Object obj){if(this== obj)returntrue;if(obj ==null)returnfalse;if(getClass()!= obj.getClass())returnfalse;Person other =(Person) obj;if(alter != other.getAlter())returnfalse;if(name ==null){if(other.getName()!=null)returnfalse;}elseif(!name.equals(other.getName()))returnfalse;returntrue;}}
Das wichtige bei sowas im Zusamenhang mit eigenen Klassen ist, dass man equals und hashCode überschreibt. In Eclipse kann man sich diese Methoden (genauso wie den Konstruktor und die getter/setter) automatisch erstellen lassen.
gibts ne möglichkeit das ich automatisch einen Index beim adden erzeuge?
oder muss ich den stets beim hinzufügen in die Liste angeben (durch ne variable oder so)
ich soll nämlich x Kunden erzeugen und kann auch nur die parameter vom kunden in die liste schreiben
Code:
Kunde k1 = new Kunde(Kunde.generateString(9), Kunde.createName());
kundenListe.add(k1);
generateString erzeugt eine Kundennummer aus char's
createName erzeugt per Zufall einen Namen aus nem array
Jeder Eintrag in der List hat automatisch einen Index. Wenn du
add(E element)
zu hinzufügen benutzt, wird die aktuelle size() der List als Index genommen und die size erhöht sich dementsprechend um eins.
wenn du
add(int index, E element)
benutzt, kannst du den index selber festlegen. ( die size erhöht sich dann natürlich genauso um eins)
indexOf erwartet ein Object als Parameter.
Jedes Element in der Liste wird über die Methode equals mit dem übergebenen Object verglichen.
Bei dem Element wo equals true zurückliefert, wird der Index dieses Objectes innerhalb der Liste zurückgegeben
Ansonsten wird -1 zurückgegeben, da das Object welches als Parameter übergeben wurde nicht in der Liste vorkommt.
Wenn du das Element mit dem Index 3 haben willst, dann benutz
list.get(3)
die Nummerierung beginnt übrigens bei 0, d.h. list.get(3) liefert dir das 4. Element!