Viele Informationen aus zwei Collections vergleichen

Status
Nicht offen für weitere Antworten.

chriss_2oo4

Mitglied
Hi,

ich habe einen Vector Wörter und einen Vector Sätze. Nun möchte ich herausfinden welche zwei Wörter (Wortpaare) min. 3x zusammen in einem Satz auftreten.

Alle einzelnen Wörter stehen im Vector Wörterund alle Sätze stehen im Vector Sätze, die Relation zwischen beiden Vectoren steht im Vector WortInSatz

Also z. B.:

Sätze:
-----------------------------------------------------------------
0 | Die Ampel ist grün...
1 | Wenn die Ampel grün ist...
2 | Die Ampel kennt folgende Zustände: grün, orange...
...
------------------------------------------------------------------

Wörter:
-----------------------------------------------------------------
0 | Die
1 | Ampel
2 | ist
...
------------------------------------------------------------------

WortInSatz (Wort-Id | Satz-Id):
------------------------------------------------------------------
0 | 0
1 | 0
2 | 0
...
------------------------------------------------------------------

Als ergebnis möchte ich jetzt die Wörter "Die" und "Ampel".

Nun weiß ich nicht ganz wie ich das realisieren soll, ich müsste ja jedes Wort miteinander vergleichen und mir das Vorkommen in einem Satz merken, und wo soll ich mir die ganzen Informationen merken -> evtl Hash-Map mit Id als Key und Anzahl als Value?

Hat vielleicht jemand eine bessere Idee wie man soetwas lösen könnte?


Lg Chriss
 

Marco13

Top Contributor
Hm - ja, spontan würd' sich sagen, dass man nicht drumrumkommt, über alle Wörter und alle Sätze zu laufen
Code:
for (String wort : wörter)
{
    for (String satz : sätze)
    {
        if (satz.contains(wort))
        {
            erhöheZähler(wort);
        }
    }
}

Dann ginge es nurnoch um die Frage, wie man "erhöheZähler" implementiert. Das könnte dann aber davon abhängen, wie genau man die Information später auslesen will. Wenn man nur EIN mal Wörter rausfischen will, die eine Bestimmte Anzahl haben, tut's wohl eine HashMap, die man nachher einmal schnell durchsucht
Code:
private Map<String, Interger> wordCount = new HashMap<String, Integer>();

void erhöheZähler(String wort)
{
    if (!wordCount.containsKey(wort))
    {
        wordCount.put(wort, 1);
    }
    else
    {
        wordCount.put(wort, wordCount.get(wort)+1);
    }
}

// Auslesen: 
for (String wort : wordCount.keySet())
{
    if (wordCount.get(wort) == 3) System.out.println(wort);
}

Bei anderen Anwendungen (z.B. eine "Wortstatistik") könnte es aber geschicktere Lösungen geben, als eine HashMap. Für eine "Rangliste" der Wörter wäre eine Map, die nach Values sortiert vielleicht angebracht http://www.java-forum.org/de/topic67748_map-treemap-sorted-by-values.html , ... muss man sich halt überlegen.
 

Marco13

Top Contributor
Oha - ein Nachtrag: Je nachdem, um wie viele Worte uns Sätze es geht, könnte es sinnvoller sein, die Sätze zu zerlegen (man muss dann aber genau überlegen, wie man das macht - bzgl. Satzzeichen usw). D.h. man könnte das erste oben gepostete Codestück auch schreiben als
Code:
for (String satz : sätze)
{
    String wörterImSatz[] = ... zerlegen, z.b. mit String.split .... 
    for (String wort : wörterImSatz)
    {
        erhöheZähler(wort);
    }
}
und dann die damit erhaltene Map verwenden, um die gesuchten Wörter einzeln abzufragen. Die Laufzeiten hängen da dann auch wieder davon ab, welche Operation wie oft durchgeführt werden muss usw.... Wenn man SEHR viele Wörter abfragen muss, wäre die zweite Lösung sicher schneller.... Wenn man sehr viele Sätze mit sehr vielen Worten hat, aber nur wenige davon abfragen muss, wäre die erstgenannte evtl. sinnvoller, da sie dann viel weniger Speicherplatz braucht...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Best Practice Wie viele Referenzen machen Sinn? Weniger ist mehr? Allgemeine Java-Themen 1
D Input/Output Implementierung eines CommandHandlers/Parsers für viele Eingaben Allgemeine Java-Themen 26
T Multithreading: Wie viele Threads sollte ich erstellen? Allgemeine Java-Themen 12
Tacofan Hangman so viele Labels wie Buchstaben Allgemeine Java-Themen 5
K Variablen Konstruktor, unendlich viele Allgemeine Java-Themen 3
E Beliebig viele Worte Allgemeine Java-Themen 5
G Methoden Unterschiedliche viele Parameter Allgemeine Java-Themen 17
L MouseListener für viele Objekte erstellen Allgemeine Java-Themen 16
H Sehr viele Threads effizient Verwalten Allgemeine Java-Themen 13
R Arrayausgabe enthält viele Leerzeichen Allgemeine Java-Themen 4
M Threads Viele Aufrufe aus Thread, komisches Verhalten Allgemeine Java-Themen 8
C Threads Verbraucht eine Zeitabfrage viele Rechen-Ressourcen? Allgemeine Java-Themen 8
J BlueJ Methode hat zu viele Parameter Allgemeine Java-Themen 6
D (Viele) Daten performant speichern und lesen Allgemeine Java-Themen 5
S Viele zip-files zu einem kombinieren..? Allgemeine Java-Themen 3
KrokoDiehl Viele JARs und deren Resourcen Allgemeine Java-Themen 9
S Zu viele Felder. Allgemeine Java-Themen 4
S Viele Bilder -> Speicher ausgelastet? / (De-)serialisierung geht nicht mehr richtig Allgemeine Java-Themen 8
H GUI: RectangleDrawer - zu viele Elemente im Vector für die paint-Methode Allgemeine Java-Themen 6
R Moeglichst viele Datumsstrings in Date Objekte konvertieren? Allgemeine Java-Themen 3
O viele Datensätze aus Datenbank - Java Heap Space - Excepion Allgemeine Java-Themen 25
T viele Threads Allgemeine Java-Themen 14
T Designfrage: Viele, kleine Objekte Allgemeine Java-Themen 13
M Beliebig viele Typen bei Generics Allgemeine Java-Themen 3
F Viele generische Parameter sinnvoll? oder besser casten? Allgemeine Java-Themen 10
E Viele if Abfragen auf viele Strings --> Alternative zu if Allgemeine Java-Themen 8
J Viele Fragen. =) Hoffentlich könnt ihr helfen Allgemeine Java-Themen 9
V 1 Methode für viele verschiedene Klassen? Allgemeine Java-Themen 9
S Viele Fragen eines Umsteigers (von .NET) Allgemeine Java-Themen 6
K Zu viele Threads -> langsamer angehen. Allgemeine Java-Themen 3
I Laden von Informationen aus Dateien: Austauschbarkeit: 2 Dateien sinnvoll? Allgemeine Java-Themen 2
E Datei-Informationen Allgemeine Java-Themen 12
M Film Informationen aus Internet beziehen Allgemeine Java-Themen 4
M Informationen aus komplexen String parsen Allgemeine Java-Themen 13
B Suche Datenquelle für lizenz-informationen Allgemeine Java-Themen 5
C Informationen in eine Datei auslagern Allgemeine Java-Themen 19
C C-ähnlichen Code nach speziellen Informationen durchsuchen Allgemeine Java-Themen 2
J Welche Informationen werden beim Kompilieren gespeichert? Allgemeine Java-Themen 3
T Ausgabeumleitung in Datei + weitere Informationen Allgemeine Java-Themen 3
R Speichern von zusätzlichen Informationen Allgemeine Java-Themen 4
S System Informationen auslesen. Allgemeine Java-Themen 3
M Desktop-Informationen Allgemeine Java-Themen 2
M Email - Informationen auslesen Allgemeine Java-Themen 3
M Informationen über abgeleitete Klassen Allgemeine Java-Themen 18
L Informationen aus mp3-Song Allgemeine Java-Themen 5
D Informationen speichern Allgemeine Java-Themen 12
M datei informationen auslesen Allgemeine Java-Themen 16
T Informationen zu Diensten Allgemeine Java-Themen 3
T wie speichert man Daten/Informationen? Allgemeine Java-Themen 8
Luma Zip-Archiv auslesen und Entry-Informationen auslesen Allgemeine Java-Themen 3
N Servlets: Formulardaten auslesen (POST) - mehr Informationen Allgemeine Java-Themen 4
O Text aus einer Textdatei rausholen, der zwischen zwei Schlüsselworten steht Allgemeine Java-Themen 4
D Zwei Listen vergleichen Allgemeine Java-Themen 7
Tobero Wie berechnet man ob zwei Linien sich schneiden? Allgemeine Java-Themen 2
kodela Zwei gleichzeitig gedrückte Steuertasten Allgemeine Java-Themen 10
X Bedingung zwei mal überprüfen Allgemeine Java-Themen 4
Zrebna Random Number - Generische Formel zwischen zwei INKLUSIVEN Werten Allgemeine Java-Themen 16
D Input/Output Zwischen zwei ID-Räumen unterscheiden und Objekt löschen Allgemeine Java-Themen 16
D OOP Gemeinsamen ID-Raum für zwei Klassen implementieren Allgemeine Java-Themen 7
S Wenn eine Klasse zwei Interfaces mit derselben Methodensignatur implementiert: welche wird aufgerufen? Allgemeine Java-Themen 15
S Kann man Variablen oder Felder definieren deren Typ zwei Interfaces ist..? Allgemeine Java-Themen 9
K Aus String zwei Jahreszahlen auslesen Allgemeine Java-Themen 18
M Wie kann man eine void Methode mit Variablen von zwei verschiedenen Objekten ausführen? Allgemeine Java-Themen 15
VfL_Freak Double mit zwei festen NK-Stellen ausgeben Allgemeine Java-Themen 9
Neoline Methoden Zwei Arrays abwechselnd zusammenführen Allgemeine Java-Themen 15
J Zwei Wavdateien gleichzeitig mit SourceDataLine abspielen Allgemeine Java-Themen 0
D Best Practice Die niedrigste Differenz zwischen zwei Listen ermitteln. Allgemeine Java-Themen 10
J Fahrroute zwischen zwei Punkten finden Allgemeine Java-Themen 1
J Kollision von zwei Kreisen Allgemeine Java-Themen 15
J Transfer von Integer zwischen zwei Clients - RMI Allgemeine Java-Themen 4
S Variablen split-Funkton mit zwei Variabeln verwenden? Allgemeine Java-Themen 4
T Alle Kombinationen aus zwei Arrays Allgemeine Java-Themen 8
G Liste zwischen zwei Kalenderdaten erstellen Allgemeine Java-Themen 3
AssELAss Zwei Arrays / ArrayLists inhaltlich vergleichen Allgemeine Java-Themen 2
H RegularExpression zwischen zwei Strings Allgemeine Java-Themen 2
P Zwei Applikationen mit einem Job Allgemeine Java-Themen 0
A Lineare Interpolation mit zwei Arrays Allgemeine Java-Themen 4
E Berechnung des Schnittpunktes von zwei Geraden Allgemeine Java-Themen 1
S Zwei String vergleichen, Fehler markieren Allgemeine Java-Themen 3
G Matrix reduzieren zwei Methoden Allgemeine Java-Themen 2
Dechasa Vergleichen von zwei Arrays Allgemeine Java-Themen 4
P Zwei ArrayLists: Ohne die eine überhaupt anzurühren, wird sie verändert Allgemeine Java-Themen 2
S Anwendung zum ausrechnen der Differenz von zwei Tagen Allgemeine Java-Themen 9
F Zwei LinkedHashMaps iterieren und vergleichen Allgemeine Java-Themen 2
M Zwei unterschiedliche JAR Dateien mit ANT erstellen Allgemeine Java-Themen 8
B Fehler beim Auslesen von Einstellungen. Zwei ähnliche Blöcke, nur eins geht. Allgemeine Java-Themen 5
L Zwei Files miteinander vergleichen und Grafisch darstellen Allgemeine Java-Themen 1
T Zwei Wortendungen vergleichen ohne .equals Allgemeine Java-Themen 10
F Webstart zwei Java Versionen / aktivieren bzw deaktivieren Allgemeine Java-Themen 2
S Zwei Comparable (compareTo) vergleichen Allgemeine Java-Themen 6
E zwei Gleitkommazahlen durcheinander dividieren Allgemeine Java-Themen 2
X Generic muss zwei Klassen/Interfaces erfüllen Allgemeine Java-Themen 5
turmaline OOP zwei gleiche Methoden mit kleinen Unterschieden Allgemeine Java-Themen 15
C Threads Zwei Threads greifen auf LinkedList zu. Allgemeine Java-Themen 12
T Wie heißt ein Binärbaum, dessen Knoten immer zwei Kinder haben müssen? Allgemeine Java-Themen 2
C ActionListener zwei Buttons zuweisen Allgemeine Java-Themen 11
M Eclipse drei slashs durch zwei ersetzen? Allgemeine Java-Themen 3
1 zwei Strings vergleichen Allgemeine Java-Themen 16
C Buchstaben, die in zwei Wörtern vorkommen Allgemeine Java-Themen 13
J Gleiche Packagestruktur in zwei *.jar Dateien Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben