Fehler im Template vom Hausübung 10
Re: Fehler im Template vom Hausübung 10
ich hab das jetzt auch so verstanden, dass man das maximum aus den 3 vectoren suchen soll, weil man keine anderen listen hat
Atomenergie ist wie Sex - im Prinzip genial, wenn man nur wüsste wohin mit den Endprodukten.
- guido
- Computerversteher
- Beiträge: 380
- Registriert: 30. Nov 2003 21:24
- Wohnort: Mühltal
- Kontaktdaten:
Re: Fehler im Template vom Hausübung 10
So war es auch gedacht; sorry, wenn das teilweise etwas unverständlich gewesen ist.Jo(h)nny hat geschrieben:ich hab das jetzt auch so verstanden, dass man das maximum aus den 3 vectoren suchen soll, weil man keine anderen listen hat
Guido
Re: Fehler im Template vom Hausübung 10
jetzt ma ne kleine frage, was ist eigentlich wenn die listen leer sind???
also das ist ja so, dass man zuerst, bevor man alle listen mit compare durchgehen soll, eine variable anlegen muss und ihr ein objekt aus der listen zuweisen muss(man braucht ja schlisslich 2 objekte zum vergleich).
also das ist ja so, dass man zuerst, bevor man alle listen mit compare durchgehen soll, eine variable anlegen muss und ihr ein objekt aus der listen zuweisen muss(man braucht ja schlisslich 2 objekte zum vergleich).
Atomenergie ist wie Sex - im Prinzip genial, wenn man nur wüsste wohin mit den Endprodukten.
- guido
- Computerversteher
- Beiträge: 380
- Registriert: 30. Nov 2003 21:24
- Wohnort: Mühltal
- Kontaktdaten:
Re: Fehler im Template vom Hausübung 10
Gemäß Doku (java.util.Collection, static <T> T max(Collection, Comparator)):Jo(h)nny hat geschrieben:jetzt ma ne kleine frage, was ist eigentlich wenn die listen leer sind???
also das ist ja so, dass man zuerst, bevor man alle listen mit compare durchgehen soll, eine variable anlegen muss und ihr ein objekt aus der listen zuweisen muss(man braucht ja schlisslich 2 objekte zum vergleich).
max wirft zwei mögliche Arten von Exceptions:
ClassCastException - if the collection contains elements that are not mutually comparable using the specified comparator.
NoSuchElementException - if the collection is empty.
Guido
Re: Fehler im Template vom Hausübung 10
also müsste unsere methode auch die 2 arten von exceptions werfen?? wobei die erste ist ja in unserem fall überflüssig, weil wir ja nur StockItems in inseren listen haben:)
Atomenergie ist wie Sex - im Prinzip genial, wenn man nur wüsste wohin mit den Endprodukten.
- guido
- Computerversteher
- Beiträge: 380
- Registriert: 30. Nov 2003 21:24
- Wohnort: Mühltal
- Kontaktdaten:
Re: Fehler im Template vom Hausübung 10
Die Exception wird im Zweifelsfall direkt beim Aufruf von "myCollection.max()" ausgelöst. Beide sind aber RuntimeExceptions, die ihr also nicht per "throws..." deklarieren oder per catch(...) fangen müsst.Jo(h)nny hat geschrieben:also müsste unsere methode auch die 2 arten von exceptions werfen?? wobei die erste ist ja in unserem fall überflüssig, weil wir ja nur StockItems in inseren listen haben:)
Guido
Re: Fehler im Template vom Hausübung 10
woher kommt eigentlich myCollection.max(), wir haben doch max bei storemanager implementiert und das objekt, auf das wir methode anwenden ist ja keine collection
, oder versteh ich da was falsch?????
und da die methode nur nen comparator als parameter übergebenbekommt, müssen wir mit dem compare(obj1,obj2) die 3 vectoren durchgehen. hab ich soweit recht???



und da die methode nur nen comparator als parameter übergebenbekommt, müssen wir mit dem compare(obj1,obj2) die 3 vectoren durchgehen. hab ich soweit recht???
Atomenergie ist wie Sex - im Prinzip genial, wenn man nur wüsste wohin mit den Endprodukten.
- Krümelmonster
- Geek
- Beiträge: 767
- Registriert: 17. Okt 2007 13:58
- Wohnort: Jossgrund
Re: Fehler im Template vom Hausübung 10
Stell deinen Fuß auf einen hohen Sockel
Mach dir ein Haar aus tausend Locken
Du bleibst doch immer, was du bist!
Mach dir ein Haar aus tausend Locken
Du bleibst doch immer, was du bist!
Re: Fehler im Template vom Hausübung 10
und was hat also guido mit "myCollection.max()" gemeint??
so hat sich erledigt:)
@guido, ich finds unsportlich auf die listen die vordefenierte max anzuwenden;)
so hat sich erledigt:)
@guido, ich finds unsportlich auf die listen die vordefenierte max anzuwenden;)
Atomenergie ist wie Sex - im Prinzip genial, wenn man nur wüsste wohin mit den Endprodukten.
- guido
- Computerversteher
- Beiträge: 380
- Registriert: 30. Nov 2003 21:24
- Wohnort: Mühltal
- Kontaktdaten:
Re: Fehler im Template vom Hausübung 10
Wieso -- den Comparator müsst Ihr dann ja schließlich selbst implementieren...??Jo(h)nny hat geschrieben:und was hat also guido mit "myCollection.max()" gemeint??
so hat sich erledigt:)
@guido, ich finds unsportlich auf die listen die vordefenierte max anzuwenden;)

Guido
Re: Fehler im Template vom Hausübung 10
ich verstehe nicht, warum man die myCollection.max-funktion ohne parameter verwenden soll? warum nicht die wo ich eine collection und einen comparator übergebe?
- guido
- Computerversteher
- Beiträge: 380
- Registriert: 30. Nov 2003 21:24
- Wohnort: Mühltal
- Kontaktdaten:
Re: Fehler im Template vom Hausübung 10
Die "max()" Methode hat durchaus Parameter, die habe ich nur nicht gerade auswendig im Kopf. Wird wohl (Collection<T>, Comparator<U>) (oder so ähnlich) lauten...evel hat geschrieben:ich verstehe nicht, warum man die myCollection.max-funktion ohne parameter verwenden soll? warum nicht die wo ich eine collection und einen comparator übergebe?
Guido
-
- Nerd
- Beiträge: 647
- Registriert: 1. Okt 2007 12:40
- Wohnort: Darmstadt
- Kontaktdaten:
Re: Fehler im Template vom Hausübung 10
genauer:guido hat geschrieben:Die "max()" Methode hat durchaus Parameter, die habe ich nur nicht gerade auswendig im Kopf. Wird wohl (Collection<T>, Comparator<U>) (oder so ähnlich) lauten...evel hat geschrieben:ich verstehe nicht, warum man die myCollection.max-funktion ohne parameter verwenden soll? warum nicht die wo ich eine collection und einen comparator übergebe?
Guido
Code: Alles auswählen
StockItem max(T comparator)
Re: Fehler im Template vom Hausübung 10
Nochmal als Bestätigung, den Comparator müssen wir selbst implementieren und dieser muss dann alle drei Vektoren enthalten, von denen dann in max() das Maximum rausgesucht wird? Mir fehlen nämlich sonst die drei Argumente, die ich übergeben muss...
-
- Nerd
- Beiträge: 647
- Registriert: 1. Okt 2007 12:40
- Wohnort: Darmstadt
- Kontaktdaten:
Re: Fehler im Template vom Hausübung 10
Also deine drei gesuchten Argumente sind bereits in der Klasse StoreMangager enthalten, in der du diese Methode implementierst. Deshalb brauchst du keine Argumente mehr, weil du einfach auf die Vektoren des StoreManagers die max-Methode ausführst. Der Comperator ist nur dazu da um "Code einzuschleusen" á la lambda bei Scheme. Denn im Endeffekt übergibst du per Comperatorobjekt der Methode eine Funktion als Parameter, mit dessen Hilfe dann entschieden wird, was nun maximal ist. Dadurch das festgelegt ist, dass nur Objekte die das Comparatorinterface implementieren übergeben werden dürfen, ist auch sichergestellt, dass man mit diesem Objekt die Funktionen compare und equal aufrufen kann, z.B.:caesar hat geschrieben:Nochmal als Bestätigung, den Comparator müssen wir selbst implementieren und dieser muss dann alle drei Vektoren enthalten, von denen dann in max() das Maximum rausgesucht wird? Mir fehlen nämlich sonst die drei Argumente, die ich übergeben muss...
... StockItem max(T comparator) {
comparator.compare(o1, o2);
}
Der implementierte Code, der dann ausgeführt wird, hängt also von dem Objekt ab (Stichwort: Subtyp-Polymorphie!), dass du der max übergeben hast.
Zum Vergleich ist das wie bei Scheme mit filter, map und fold. Da musstest du ja auch immer eine Funktion direkt übergeben, um eine Operation auf einer Liste auszuführen. Das gleiche machen wir hier nun in Java. Also betrachte eher das mit dem Comperator als abstrakt (beliebig; alle Klassen, die das Comperatorinterface implementieren), also wie das f als Parameter bei map, filter und fold bei Scheme, z.B.:
(define (map f myList)
...(cons (f (first mylist))...)...)