Ich muss eine Häufigkeitstabelle erstellen, die Strings in einem Array oder ArrayList
verwendet, und verwendet die intern
-Methode, die einen String zurückgibt. Ich hatte gehofft, etwas wie das Folgende zu tun, aber es hat nicht funktioniert.Testing String Pool
Ich bestätige, dass es bessere Möglichkeiten gibt, Häufigkeitstabellen zu erstellen, aber die Aufgabenbeschränkungen sind bindend.
Ok, herausgegeben von den Kommentaren zu urteilen, ist dies nicht hilfreich. Also lass uns zurück verfolgen.
Ich habe die Zeichenfolgen aus Textdateien importiert, Sonderzeichen entfernt, den Text in Kleinbuchstaben konvertiert und dann die einzelnen Wörter in einem ArrayList
gespeichert. Ich habe Duplikate desselben Wortes erhalten, weil ich versuche, eine Häufigkeitstabelle der Wörter zu erstellen. Meine Aufgabe ist es, die string intern Methode irgendwo in meinem Code zu verwenden, um diesen Prozess schneller zu machen!
Wie in diesem Forum häufig erwähnt wurde, und jede andere Ressource, die ich online finden kann, kann die String intern Methode verwendet werden, um die Gleichheit von zwei String-Objektverweise mit dem logischen Operator “==”
zu testen. Zum Beispiel:
String s1 = new String("first").intern();
String s2 = "first";
String s3 = new String("first");
System.out.println(s1 == s2); //prints true
System.out.println(s2 == s3); //prints false
System.out.println(s1 == s3); //print false
Aber ich habe es mit Zehntausenden von Wörtern zu tun! Wie erstelle ich einen Prozess, der so viele Objektreferenzen für eine interne Zeichenfolge erstellt und dann jede mit dem String-Pool testet, sodass ich weiß, ob die Worthäufigkeit um eins erhöht werden soll?
Warum möchten Sie 'intern()' Methode verwenden? –
Was meinst du mit funktioniert nicht? Das einzige, was ich sehe, könnte ein mögliches Problem sein, wenn Sie die Daten in die Karte setzen, die Sie mit myMap.put (myArray [i], myMap.get (myArray [i]) + 1) abrufen passiert vor dem Setzen, so dass Sie möglicherweise eine Null bei diesem Aufruf zurückgeben, was zu null + 1 führt. – Jere
Verwenden Sie 'myMap.containsKey (myArray [i])' anstelle von 'myArray [i] == new String (myArray [i]) .intern() 'in if Bedingung – Rehman