# HashSet und JDK Collection Classes



## JavaNoob (27. Apr 2004)

So ich sitz jetzt schon seid Tagen an dieser scheiße und versuch mir programmieren beizubringen. Dank eines kleinen Fernkurses und n bissl Hilfe von nem Bekannten klappt das auch schon n bissl. Jetzt hab ich hier aber ne Aufgabe bei der ich das einfach nicht gebacken bekomm. 
Also im Prinzip ist das alles recht simpel, da die Anleitung und Aufgabenstellung recht präzise sind, ich komm allerdings mit dem Hash nicht klar. Vielleicht versteht das ja jemand und kann mir das erklären oder mal ne ähnliche Klasse zeigen. Vielleicht hat das ja jemand schonmal gemacht. 

Würd mich freuen wenn mir jemand weiterhelfen kann, damit ich mal weiter komm mit dem programmieren.

P.S. bitte nicht zu anspruchsvoll ich muss da erstmal hintersteigen.

Also in dieser Aufgabe soll die Verwendung von Collection-Klassen des JDK geübt werden.

Zur Aufgabe:
Es geht um die Ermittlung der Wörter und ihrer Häufigkeiten in einem Text.

Realisieren Sie eine Klasse WortInfo. 
Eine Instanz dieser Klasse repräsentiert ein Wort mit seiner Häufigkeit in einem Text. Implementieren Sie darin einen Konstruktor WortInfo(String wort, int haeufigkeit). Sie benötigen in der Klasse WortInfo zusätzliche Methoden und ggf. Konstruktoren. Diese ergeben sich aus der weiteren Aufgabenstellung.

Realisieren Sie eine Klasse Textanalysierer mit einer Methode void fuegeHinzu(String zeile), durch die dem Textanalysierer eine Textzeile hinzugefügt werden kann. Verwenden Sie eine Collection-Klasse des JDK, um sich im Textanalysierer die Textzeilen zu merken. Wählen Sie eine Klasse, mittels derer der Text so reproduziert werden könnte, wie er durch Anwendung von fuegeHinzu aufgebaut wurde.

Realisieren Sie in Textanalysierer außerdem eine Methode HashSet analysiere(), die
den Text analysiert und eine Menge von WortInfo-Objekten zurückgibt. 
Als Zeichen zur Worttrennung sollen " .,:;!?" verwendet werden.

Hinweis 1: 

Überlegen Sie, welche Collection-Klasse sich gut eignet, um innerhalb der Methode
analysiere die WortInfo-Objekte zu verwalten. Diese Klasse muss nicht mit dem
Rückgabetyp übereinstimmen.

Realisieren Sie zum Test eine Klasse TextanalysiererTest basierend auf JUnit. Als
Testobjekt soll ein Objekt der Klasse Textanalysierer erzeugt werden. Auf dieses Objekt
sind folgende Operationen und Testfälle anzuwenden:

Operation / Testfal--------------------------------Soll-Ergebnis----------------------------------------

Aufruf von analysiere-----------------------------leere Menge-----------------------------------------

Satz "Der erste Satz." hinzufügen----------------------------------------------------------------------

Aufruf von analysiere-----------------------------Menge bestehend aus den WortInfo-Objekten--
------------------------------------------------------(Der, 1), (erste, 1) und (Satz, 1)----------------

Satz "Der zweite Satz." hinzufügen--------------------------------------------------------------------

Aufruf von analysiere-----------------------------Menge bestehend aus den WortInfo-Objekten--
------------------------------------------------------(Der, 2), (erste, 1), (zweite, 1) und (Satz, 2)---

Satz "Der dritte Satz." hinzufügen----------------------------------------------------------------------

Aufruf von analysiere-----------------------------Menge bestehend aus den WortInfo-Objekten---
------------------------------------------------------(Der, 3), (erste, 1), (zweite, 1), (dritte, 1) und (Satz,3)


Hinweis: 
Die Methode analysiere liefert als Resultat eine Instanz der Klasse HashSet. 
Zum Test bietet es sich an, auch für das Soll-Ergebnis ein Objekt der Klasse HashSet zu verwenden und dann beide HashSet-Objekte auf Gleichheit zu testen. Dafür benötigen Sie zusätzliche Methoden in der Klasse WortInfo, denn aus dieser Klasse sind die Elemente der HashSets.

Implementieren Sie in Textanalysierer zusätzlich eine Methode WortInfo[] analysiereSortiert(), die das Eregebnis der Analyse in einem Array zurückgibt. Die WortInfo-Objekte im Array sollen sortiert sein, und zwar aufsteigend nach der Worthäufigkeit und bei gleicher Häufigkeit aufsteigend in alfabetischer Ordnung. Erweitern Sie die Testklasse um eine passende Methode mit folgendem Testfall:



Operation/Testfall---------------------------------------Soll-Ergebnis
Satz „Der erste Satz .“ hinzufügen -------------------	
Satz „Der zweite Satz .“ hinzufügen------------------	
Satz „Der dritte Satz .“ hinzufügen-------------------	
Aufruf von analysiereSortiert-------------------------Array mit den WortInfo-Objekten (dritte, 1),
----------------------------------------------------------(erste, 1), (zweite, 1), (Der, 3), (Satz, 3)



Danke für eure Antworten 

Der "noch" JavaNoob


----------



## bygones (27. Apr 2004)

Naja ehrlich gesagt widerstrebt es mir hier Lösungen zu posten...

Ich denke die Klasse "WortInfo" ist einfach und sollte auch so machbar sein (zum sortieren - schau dir mal das interface comparable an).

Wegen der Textanalysiere klasse: wenn das ermitteln der Worthäufigkeiten erst in der methode analyieseren stattfindet sollte kannst du hierfür z.B. eine einfache Liste (Vector, ArrayList usw.).

Wenn konkrete Fragen sind dann stell sie und sie werden dir beantwortet. Es ist nur nicht gern gesehen, wenn man hier komplette Aufgaben lösen soll. (wenn du jemanden suchst, der dir das löst - dann poste das bitte in "Aufgabe und Gesuche") !


----------



## JavaNoob (27. Apr 2004)

Jo schon klar, aber danke schonmal, ich sitz gerade eh vor und versuch nochmal mein Glück. Wenn ich nicht weiter komm poste ich einfach. 

P.S. So ein Forum gibts auch? Naja würd mich schonmal interessieren. Aber will das auch irgendwie selber schaffen, aber mal dort posten kann ja nicht schaden, vielleicht hat ja jemand schon ne Lösung, die er mir freundlicher weise mal zur Einsicht posten kann, oder vielleicht ist das auch so einfafch, dass jemand das mal schnell codet. 

Danke schonmal!!!!


----------

