Objekte zählen
-
Gibt es eine Möglichkeit, wie ich ohne das "anz" herausfinden kann,
wieviele Personen schon in meinem Array sind.public class PersonenVerwaltung { private static PersonenVerwaltung instance; private Person [] personen = new Person[20]; private int anz;
[java] public void addPerson( Person person ) {
/* ********************************************************
* Prüfuen ob die Person schon existiert
* ********************************************************/if( findPerson( person.getPersonNr() ) != null ) {
System.out.println("Person mit personalNr " + person.getPersonNr() + " bereits vorhanden" );
return;
}/* ********************************************************
* Array vergrößern falls nicht genügend Platz ist
* ********************************************************/if( anz >= personen.length ) {
Person [] temp = new Person[ personen.length * 2 ];
for( int i= 0; i < anz; i++ ) {
temp[ i ] = personen[ i ];
}personen = temp;
}/* ********************************************************
* Person hinzufügen
* ********************************************************/personen[ anz++ ] = person;
}[/java]
-
Ich weis nicht, ob dir das hilft, aber wie wäre es, wenn du eine static Variable in deine Klasse Personen einfügst, die bei jedem Konstruktor aufruf inkrementiert wird, anhand dieser Variable kannst du immer die Gesamtzahl deiner Objekte abfragen. Beim Anlegen einer neuen Person überprüfst du dann die größe dieser Variable mit der des Arrays.
-
Was du da machst, wird doch bereits mit ArrayList realisiert. Warum nicht einfach diese verwenden?
-
bin mir gerade nicht sicher, aber ich glaube eine arrayList zählt auch "null" mit oder?
also eine arrayList.add(null); würde dann ein size +1 geben oder? also entweder steh ich auf der leitung oder auch eine arrayList zählt nur die anzahl der elemente (einschließlich null)
somit wird man wohl eher etwas ala
int anzahl = 0; for (int i = 0; i<array.length; i++) { if (null != array[i]) { anzahl++; } }
machen müssen. (code läuft so vermutlich nicht aber ich hoffe es ist klar was ich meine)
alternativ zählt bzw merkt man sich eben intern wieviel personen wirklich in der liste sind
PS: das mit der "anz" ist mMn die bessere lösung. eventuell sollte der TE mal den grund erläutern warum er ohne das "anz" arbeiten möchte?
-
Der OP versucht an keiner Stelle, "null" in eine Liste einzufügen.
Es sieht eher so aus, als ob da Set-Funktionalität implementiert werden soll. Das könnte man dann über TreeSet mit einem eigenen Comparator machen.
-
jep aufgrund seiner add methode geht das nicht
in der ArrayList geht das aber schon. also müsste man die add methode entsprechend überschreiben. folglich auch addAll und alles andere
bei einem set hab ich das gleiche problem. hier kann ich ebenfalls ein "null" einfügen das gezählt wird. etc pp
macht aber sowieso alles keinen sinn. die frage war ob er "anz" auch ohne "anz" ermitteln kann. das kann er über die skizzierte forschleife. sinn macht das auch nicht. es ist ehrlich gesagt sogar schlecht.
intern arbeiten collections btw ebenfalls mit anz bzw first/lastindex somit macht eine arrayList/set intern genau das was der TE scheinabr nicht will bzw er will eine alternative. wie gesagt gibt es aber keine gute alternative! eine schlechte aber schon