Fehler im Template vom Hausübung 10

Benutzeravatar
Jo(h)nny
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 197
Registriert: 19. Dez 2007 23:39

Re: Fehler im Template vom Hausübung 10

Beitrag von Jo(h)nny » 17. Jan 2008 15: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.

Benutzeravatar
guido
Computerversteher
Computerversteher
Beiträge: 378
Registriert: 30. Nov 2003 21:24
Wohnort: Mühltal
Kontaktdaten:

Re: Fehler im Template vom Hausübung 10

Beitrag von guido » 19. Jan 2008 12:13

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
So war es auch gedacht; sorry, wenn das teilweise etwas unverständlich gewesen ist.

Guido

Benutzeravatar
Jo(h)nny
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 197
Registriert: 19. Dez 2007 23:39

Re: Fehler im Template vom Hausübung 10

Beitrag von Jo(h)nny » 19. Jan 2008 12:21

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).
Atomenergie ist wie Sex - im Prinzip genial, wenn man nur wüsste wohin mit den Endprodukten.

Benutzeravatar
guido
Computerversteher
Computerversteher
Beiträge: 378
Registriert: 30. Nov 2003 21:24
Wohnort: Mühltal
Kontaktdaten:

Re: Fehler im Template vom Hausübung 10

Beitrag von guido » 20. Jan 2008 09:11

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).
Gemäß Doku (java.util.Collection, static <T> T max(Collection, Comparator)):

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

Benutzeravatar
Jo(h)nny
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 197
Registriert: 19. Dez 2007 23:39

Re: Fehler im Template vom Hausübung 10

Beitrag von Jo(h)nny » 20. Jan 2008 15:34

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.

Benutzeravatar
guido
Computerversteher
Computerversteher
Beiträge: 378
Registriert: 30. Nov 2003 21:24
Wohnort: Mühltal
Kontaktdaten:

Re: Fehler im Template vom Hausübung 10

Beitrag von guido » 20. Jan 2008 20:01

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:)
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.

Guido

Benutzeravatar
Jo(h)nny
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 197
Registriert: 19. Dez 2007 23:39

Re: Fehler im Template vom Hausübung 10

Beitrag von Jo(h)nny » 20. Jan 2008 22:20

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???
Atomenergie ist wie Sex - im Prinzip genial, wenn man nur wüsste wohin mit den Endprodukten.

Benutzeravatar
Krümelmonster
Geek
Geek
Beiträge: 767
Registriert: 17. Okt 2007 13:58
Wohnort: Jossgrund

Re: Fehler im Template vom Hausübung 10

Beitrag von Krümelmonster » 21. Jan 2008 00:33

Soweit hast du recht.

Hat Prof. Rößling schon vorher im Thread geschrieben.
Stell deinen Fuß auf einen hohen Sockel
Mach dir ein Haar aus tausend Locken
Du bleibst doch immer, was du bist!

Benutzeravatar
Jo(h)nny
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 197
Registriert: 19. Dez 2007 23:39

Re: Fehler im Template vom Hausübung 10

Beitrag von Jo(h)nny » 21. Jan 2008 11:24

und was hat also guido mit "myCollection.max()" gemeint??

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.

Benutzeravatar
guido
Computerversteher
Computerversteher
Beiträge: 378
Registriert: 30. Nov 2003 21:24
Wohnort: Mühltal
Kontaktdaten:

Re: Fehler im Template vom Hausübung 10

Beitrag von guido » 21. Jan 2008 11:54

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;)
Wieso -- den Comparator müsst Ihr dann ja schließlich selbst implementieren...?? :)

Guido

evel
Erstie
Erstie
Beiträge: 19
Registriert: 16. Nov 2007 11:08

Re: Fehler im Template vom Hausübung 10

Beitrag von evel » 23. Jan 2008 16:14

ich verstehe nicht, warum man die myCollection.max-funktion ohne parameter verwenden soll? warum nicht die wo ich eine collection und einen comparator übergebe?

Benutzeravatar
guido
Computerversteher
Computerversteher
Beiträge: 378
Registriert: 30. Nov 2003 21:24
Wohnort: Mühltal
Kontaktdaten:

Re: Fehler im Template vom Hausübung 10

Beitrag von guido » 23. Jan 2008 17:53

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?
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...

Guido

Stumpf.Alex
Nerd
Nerd
Beiträge: 643
Registriert: 1. Okt 2007 12:40
Wohnort: Darmstadt
Kontaktdaten:

Re: Fehler im Template vom Hausübung 10

Beitrag von Stumpf.Alex » 23. Jan 2008 18:22

guido hat geschrieben:
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?
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...

Guido
genauer:

Code: Alles auswählen

StockItem max(T comparator)

caesar
Erstie
Erstie
Beiträge: 14
Registriert: 13. Nov 2007 18:24

Re: Fehler im Template vom Hausübung 10

Beitrag von caesar » 23. Jan 2008 20:55

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...

Stumpf.Alex
Nerd
Nerd
Beiträge: 643
Registriert: 1. Okt 2007 12:40
Wohnort: Darmstadt
Kontaktdaten:

Re: Fehler im Template vom Hausübung 10

Beitrag von Stumpf.Alex » 24. Jan 2008 00:08

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...
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.:

... 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))...)...)

Antworten

Zurück zu „Archiv“