Hallo,
ich sitz gerade vor ner Aufgabe und mir raucht der Kopf.
Hoffe jemand kann mir helfen. Erstmal die Aufgabenstellung:
So. First things first: Da ist wohl ein Fehler in der Angabe. (zaehleHaeufigkeit vs zahleWorte) - Ich hab ihn mal mit hier reingepostet falls das doch kein Fehler ist und ich was total verplane.
Nun also zu meiner gedachten vorgehensweise in der Methode:
- Iterator erzeugen
- map erzeugen
- Liste durchlaufen
- Abfrage für jedes Listenelement ob bereits in Map
- Falls ja: value +1
- Falls nein: Listenelement als Key zur Map hinzufügen und value auf int 1 setzten
- Map returnen
Soweit bin ich gekommen:
Fragen stehen als Kommentar im Quelltext meiner (nicht vollständigen) Lösung.
Größste Fragen für mich sind:
1) Ist das oben normal das ich bis zu dem Zeitpunkt wo ich das erste mal was in die Map schreiben möchte noch garnicht festgelegt habe welches Format die Keys, welches der Value hat ? - Habe ich die Hashmap überhaupt richtig angelegt.
2) Wenn in einer Map der Key aus Strings besteht (z.B. "Pia") und der Value aus nem int wert (z.b. 1), wie kann ich auf den Value zugreifen und ihn um 1 erhöhen ?
Ich hoffe hier findet sich ein Profi mit Geduld
Vielen Dank im Voraus,
Julia.
ich sitz gerade vor ner Aufgabe und mir raucht der Kopf.
Hoffe jemand kann mir helfen. Erstmal die Aufgabenstellung:
Schreiben Sie eine statische Methode zaehleHaeufigkeit() in der Klasse Util.
Java:public static Map zaehleWorte (List xs)
Die Methode zaehleHaeufigkeit ermittelt wie oft jedes Wort in der Liste vorkommt. Im Ergebnis steht als Schlüssel alle vorkommenden Worte und als Wert die Anzahl des Vorkommens.
Bsp.: Eingabe: "Otto", "Pia", "Urs", "Pia", "Urs", "Pia"
Ergebnis: ("Otto", 1), ("Pia",3), "("Urs",2)
So. First things first: Da ist wohl ein Fehler in der Angabe. (zaehleHaeufigkeit vs zahleWorte) - Ich hab ihn mal mit hier reingepostet falls das doch kein Fehler ist und ich was total verplane.
Nun also zu meiner gedachten vorgehensweise in der Methode:
- Iterator erzeugen
- map erzeugen
- Liste durchlaufen
- Abfrage für jedes Listenelement ob bereits in Map
- Falls ja: value +1
- Falls nein: Listenelement als Key zur Map hinzufügen und value auf int 1 setzten
- Map returnen
Soweit bin ich gekommen:
Java:
public class Util{
public static Map zahleHaeufigkeit (List xs){
Map tmp = new HashMap(); // Erste Frage hier: Hash oder Treemap ? Kenne die Unterschiede theoretisch, kann mich dennoch nicht entscheiden.
Iterator it = xs.iterator(); //Zweite Frage: Könnte ich hier um mir eventuelles späteres Casten zu sparen mit Generics arbeiten, d.h. List<String> it = xs.iterator<String>(); ?
while (it.hasNext()){
if (tmp.containsKey(it.next()){
//... Dritte Frage: Wie kann ich am Value rumdrehen ? Das hier wäre nun der Fall dass z.b. "Pia" bereits in der Map ist und ich den (int)Value um 1 erhöhen möchte.
}
else{
tmp.put((String)it.next(),(int)"1"); ///Vierte Frage: Ist das hier richtig ?
}
return tmp;
}
Fragen stehen als Kommentar im Quelltext meiner (nicht vollständigen) Lösung.
Größste Fragen für mich sind:
1) Ist das oben normal das ich bis zu dem Zeitpunkt wo ich das erste mal was in die Map schreiben möchte noch garnicht festgelegt habe welches Format die Keys, welches der Value hat ? - Habe ich die Hashmap überhaupt richtig angelegt.
2) Wenn in einer Map der Key aus Strings besteht (z.B. "Pia") und der Value aus nem int wert (z.b. 1), wie kann ich auf den Value zugreifen und ihn um 1 erhöhen ?
Ich hoffe hier findet sich ein Profi mit Geduld
Vielen Dank im Voraus,
Julia.