1

Thema: Blatt VIII - Aufgabe 1

Heyho,

wir haben ein Problem bei der Aufgabe 1 auf dem aktuellen Übungsblatt. Wir wollen rekursiv über die Liste laufen um unseren Eintrag nachzuschlagen (Prozedur: retrieve...). Problem dabei: es existiert eine getFirst() Prozedur die uns auf das Feld zugreifen lässt, eine getRest() Prozedur gibt es aber nicht. Ist das beabsichtigt und müssen wir das dann anders lösen? Wenn ja wie ?

2

Re: Blatt VIII - Aufgabe 1

Wenn du dir ein passendes Prädikat bastelst kannst du über die select-Methode den richtigen Eintrag in  der Liste "rausfiltern".

3

Re: Blatt VIII - Aufgabe 1

Okay, danke das hab ich gesucht :-D

4

Re: Blatt VIII - Aufgabe 1

auch eine frage....

kann mir jemand sagen, warum das hier nich geht:

Double value = element.getValue();
double d = value.doubleValue();

er meint dann als fehler "cannot find symbol - method doubleValue()

????????????

5

Re: Blatt VIII - Aufgabe 1

und noch eine Frage...
Müssen bei allen Methoden in IMap die Methoden aus IList verwendet werden? Bei add kann ich mir gerade nicht wirklich vorstellen wie das gehen soll?!

6

Re: Blatt VIII - Aufgabe 1

Tom schrieb:

Double value = element.getValue();
double d = value.doubleValue();

er meint dann als fehler "cannot find symbol - method doubleValue()

Abgesehen davon, dass mir nicht ganz klar ist, wo du das brauchst - normal sollte das klappen. Wär vielleicht interssant zu wissen, was element nun genau ist

Iteration is human. Recursion is divine.

7

Re: Blatt VIII - Aufgabe 1

neenah schrieb:

und noch eine Frage...
Müssen bei allen Methoden in IMap die Methoden aus IList verwendet werden? Bei add kann ich mir gerade nicht wirklich vorstellen wie das gehen soll?!

Warum nicht?  Wie fügst du denn normalerweise ein Element einer Liste hinzu?

Iteration is human. Recursion is divine.

8

Re: Blatt VIII - Aufgabe 1

metal-heli schrieb:
neenah schrieb:

und noch eine Frage...
Müssen bei allen Methoden in IMap die Methoden aus IList verwendet werden? Bei add kann ich mir gerade nicht wirklich vorstellen wie das gehen soll?!

Warum nicht?  Wie fügst du denn normalerweise ein Element einer Liste hinzu?

ach so ich glaub dann hab ich den Hinweis falsch verstanden ... was ist mit Funktionalität von IList genau gemeint?

9

Re: Blatt VIII - Aufgabe 1

also das ist nur für einen test von map(function)

dazu habe ich eine tabelle angelegt die so aussieht

//schlüssel ist hier der waren name (als string) und der
    //datensatz ist der preis in euro(double)
   
    Map<String, Double> goods = new Map<String, Double>();

was eine warenliste sein soll name der ware und der preis...

nun will ich mit einer funktion die ich mit map drüber laufen lasse das umwandeln in eine liste mit warennamen und einer einteilung der preise (billig, teuer, ...)

und dazu wollte ich eine klasse schreiben die IFunction implementiert die dann ca so aussieht

// klasse die preise einstuft
public class CatigorizePrice<String, Double> implements IFun<Entry<String, Double>, Entry<String, String>> {

    //elemente umwandeln
    public Entry<String, String> process(Entry<String, Double> element){
        Double value = element.getValue();
        double price = value.doubleValue();
        String name = element.getKey();
       
        if(price <= 1.0){
            return new Entry<String, String>(name, "saubillig");
        }}
        ....   

}

nur wie gesagt, er meint immer die mthode doubleValue() findet er net, aber die muss doch da sein?!?!

ich verstehs absolut nich....


und noch eine weitere frage:

sind die keys eindeutig... weil rein theoretisch kann ich eine tabelle anlegen und mit der add-methode 10 elemente mit einem und dem selben key reinpacken...

und was passiert dann bei retrive().... welcher der 10 datensätze kommt dann raus


also der logik halber würde ich eine tabelle nur mit update vollpacken weil das ja schaut ob der schlüssel ergeben ist,
aber man weiß  ja nie....


danke

gruß tom

10

Re: Blatt VIII - Aufgabe 1

Tom schrieb:

public class CatigorizePrice<String, Double> implements IFun<Entry<String, Double>, Entry<String, String>> {

    //elemente umwandeln
    public Entry<String, String> process(Entry<String, Double> element){
        Double value = element.getValue();
        double price = value.doubleValue();
        String name = element.getKey()
}

Klar, hier kennt er doubleValue nicht. Du gibst bei deiner Klassendefinition als generische Typen <String, Double> an.
Für java sind das aber hier nicht die bereits bekannten Klassen für String und Double, sondern Namen, die du festlegst, wie deine generischen Typen heißen, damit du nachher diese Typen verwenden kannst. Mit dieser Definition überdeckst du sozusagen in der gesamten Klasse die bekannten Werte String und Double durch die generischen Typen die du für die Klasse beim Erzeugen angibst. Diese müssen natürlich nicht Double oder String sein, auch andere sind hier möglich, da hier das String und Double nur Bezeichner sind... Diese haben dann natürlich keine vorgegebenen Methoden mehr zur Verfügung.
Abgesehen davon: So macht das auch wenig Sinn: Wenn du dich im Vorhinein in einer Klasse auf zwei Typen beschränkst, kannst du sie auch gleich nicht generisch machen.


Tom schrieb:

und noch eine weitere frage:

sind die keys eindeutig... weil rein theoretisch kann ich eine tabelle anlegen und mit der add-methode 10 elemente mit einem und dem selben key reinpacken...

und was passiert dann bei retrive().... welcher der 10 datensätze kommt dann raus

Jo - es gibt kein Problem wenn die Schlüssel nicht eindeutig sind - dann gibst du einfach bei retrieve alle aus, die auf den Schlüssel passen.

Zuletzt bearbeitet von metal-heli (18.07.2009 22:17:54)

Iteration is human. Recursion is divine.

11

Re: Blatt VIII - Aufgabe 1

neenah schrieb:
metal-heli schrieb:
neenah schrieb:

und noch eine Frage...
Müssen bei allen Methoden in IMap die Methoden aus IList verwendet werden? Bei add kann ich mir gerade nicht wirklich vorstellen wie das gehen soll?!

Warum nicht?  Wie fügst du denn normalerweise ein Element einer Liste hinzu?

ach so ich glaub dann hab ich den Hinweis falsch verstanden ... was ist mit Funktionalität von IList genau gemeint?

Du darfst/musst alle Methoden verwenden, die in IList vorgegeben sind - und natürlich darfst du auch neue Elemente vom Typ IList erzeugen - wie willst du Methoden aus dem Interface IList verwenden, wenn du kein Element hast, das vom Typ IList (oder einem Typ der IList implementiert) ist.

Iteration is human. Recursion is divine.

12

Re: Blatt VIII - Aufgabe 1

ooooooh.... stimmt ja...

klar... ich dachte String is String, aber bei generics ja nich... stimmt...

ok das tut jezz



zu den schlüsseln, also d.h. wenn da mehrere elemente mit einem schlüssel sind wird eine liste von values zurückgegegebn??

aber laut interface soll retrive den rückgabewert VALUE haben

und nich ne liste...

wie sollen da mehere sachen rauskommen??

Zuletzt bearbeitet von Tom (18.07.2009 22:27:39)

13

Re: Blatt VIII - Aufgabe 1

Tom schrieb:

aber laut interface soll retrive den rückgabewert VALUE haben
und nich ne liste...

wie sollen da mehere sachen rauskommen??

Das ist korrekt, sorry, da dürfen natürlich nicht mehr werte rauskommen... aber nun ja, das is ja einfach lösbar, selbst wenn mehrere Elemente auf einen Key passen... ;-)

Iteration is human. Recursion is divine.

14

Re: Blatt VIII - Aufgabe 1

ja bei mir gibts halt einfach eins raus....

das erstbeste was gefunden wird...

auch wenn 10 da sind gibts einfach das erste raus

??

15

Re: Blatt VIII - Aufgabe 1

Seh ich kein Problem bei  :)

Iteration is human. Recursion is divine.

16

Re: Blatt VIII - Aufgabe 1

metal-heli schrieb:

Du darfst/musst alle Methoden verwenden, die in IList vorgegeben sind - und natürlich darfst du auch neue Elemente vom Typ IList erzeugen - wie willst du Methoden aus dem Interface IList verwenden, wenn du kein Element hast, das vom Typ IList (oder einem Typ der IList implementiert) ist.

Ich meinte eigentlich, ob ich speziell für die Methode add in IMap eine von den vier vorgegebenen Methoden in IList benutzen muss, weil ich da dann nicht wüsste wie ;)  ... aber das kann auch daran liegen, dass meine Repräsentation von Keys und Values in IMap falsch ist ... könnte mir da jemand auf die Sprünge helfen? Ich blick gerade echt nicht, wie die Felder aussehen sollten :(

17

Re: Blatt VIII - Aufgabe 1

neenah schrieb:

Ich meinte eigentlich, ob ich speziell für die Methode add in IMap eine von den vier vorgegebenen Methoden in IList benutzen muss, weil ich da dann nicht wüsste wie ;)  ... aber das kann auch daran liegen, dass meine Repräsentation von Keys und Values in IMap falsch ist ... könnte mir da jemand auf die Sprünge helfen? Ich blick gerade echt nicht, wie die Felder aussehen sollten :(

Nö, für add brauchst du jetzt keine von den Methoden die dastehen, aber mein Hinweis dazu (Objekt erzeugen) steht schon in meiner vorherigen Antwort ;-)

Iteration is human. Recursion is divine.