Frage von alexG93, 33

Java String[int][string] array?

Ich brauche ein array das die Wörter in einem Text zählt. Die 0. Dimension soll dabei alle verschiedenen Wörter beinhalten und die 1. Dimension deren Vorkommen im Text.

Leider kann ich nicht einfach arr[1][x]++ schreiben weils ja kein int ist. Wie kann ich das lösen?

Hab sowas ähnliches schonmal gehabt und mir dann einfach eine kleine Klasse geschrieben die einen int und einen string hat und die in einer liste gespeichert aber das ist doch unnötig kompliziert und muss auch einfacher gehen!

Expertenantwort
von KnusperPudding, Community-Experte für Java, 8

Mag sein dass das in anderen Programmiersprachen funktioniert. 

Aber jedenfalls in Java können die einzelnen Werte nur von einem Datentypen sein. 

int[][] test;

Hier können an den einzelnen Positionen der Array auch nur Integer Werte stehen.

Hab sowas ähnliches schonmal gehabt und mir dann einfach eine kleine Klasse geschrieben die einen int und einen string hat und die in einer liste gespeichert

Das ist durchaus ein akzeptabler Lösungsweg. Du kannst hier genauso eine Eindimensionale Array mit deiner Klasse nehmen, das muss ja nicht zwangsläufig eine List sein.

Allerdings bei deiner Aufgabenstellung wäre das doch sowieso falsch, oder?

Du hättest eine Variable für die Anzahl der Zeichen und eine Array-Variable mit den Wörtern. Wozu brauchst du für diese Aufgabenstellung eine 2D Array?

int anzahlWoerter;
String[] woerter;

...

for (String wort : woerter) {
anzahlWoerter++;
}
Antwort
von Schachpapa, 18

Du nimmst eine Map z.B. eine HashMap

Map<String,Integer> hm = new HashMap<>();
void inc(String wort) {
if (hm.contains(wort))
hm.put(wort,hm.get(wort)+1);
else
hm.put(wort,1);
}


So ungefähr ....
In anderen Programmiersprachen geht das eleganter, aber im Prinzip steckt das gleiche dahinter.

Kommentar von alexG93 ,

Danke. Also im Prinzip das gleiche was ich mit der Klasse gemacht habe.. sch*iß java^^

Kommentar von Schachpapa ,

Je nachdem, wie du deine Klasse geschrieben hast. Diese ist jedenfalls schon fertig und macht das Gleiche (und vermutlich genau so) wie Assoziative Arrays in anderen Prg-Sprachen. Nur dass die dir vorgaukeln, du hättest ein Array mit Strings als Index. Und wenn du deine Methoden anständig kapselst, dann  ist count(wort) leserlicher als arr[1][x]++ Die Zugriffszeiten bei einer HashMap sind O(1), d.h. unabhängig von der Größe des "Arrays" ratzfatz.

Antwort
von PeterKremsner, 14

Mit einem Array wird das nichts weil Java dem Array nur nummerische Indizes zuweisen kann, so etwas wie assoziative Arrays gibt es in Java meines Wissens (noch) nicht.

Was du benötigst ist zB das Objekt HashMap.

Damit kannst du eine eindeutige Verknüpfung zwischen einem Key und einem darunter gespeicherten Objekt, wobei der Key selbst auch ein Objekt sein kann (diese muss zwar bestimmte Eigenschaften haben, aber ein String Objekt hat die jedenfalls)

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten