Ich möchte eine Datei lesen, und möchte n Wörter zu sammeln, hängt von Worthäufigkeit ab.Suche nach 'n' häufigsten Wörtern aus einer Datei mit Java?
Ich habe den folgenden Code versucht, um alle Wörter in einer Zeichenfolge zu zählen.
public static void main(String[] args) throws FileNotFoundException, IOException {
FileReader fr = new FileReader("txtFile.txt");
BufferedReader br = new BufferedReader(fr);
String text = "";
String sz = null;
while ((sz = br.readLine()) != null) {
text = text.concat(sz);
}
String[] words = text.split(" ");
String[] uniqueLabels;
int count = 0;
System.out.println(text);
uniqueLabels = getLabels(words);
for (String l: uniqueLabels) {
if ("".equals(l) || null == l) {
break;
}
for (String s: words) {
if (l.equals(s)) {
count++;
}
}
System.out.println("Word :: " + l + " Count :: " + count);
count = 0;
}
}
Und ich habe den folgenden Code einzigartigen lbels zu sammeln (Worte), wenn von link,
private static String[] getLabels(String[] keys) {
String[] uniqueKeys = new String[keys.length];
uniqueKeys[0] = keys[0];
int uniqueKeyIndex = 1;
boolean keyAlreadyExists = false;
for (int i = 1; i < keys.length; i++) {
for (int j = 0; j <= uniqueKeyIndex; j++) {
if (keys[i].equals(uniqueKeys[j])) {
keyAlreadyExists = true;
}
}
if (!keyAlreadyExists) {
uniqueKeys[uniqueKeyIndex] = keys[i];
uniqueKeyIndex++;
}
keyAlreadyExists = false;
}
return uniqueKeys;
}
Und das funktioniert gut, ich will 10 top sammeln Platz hängen Worte auf es Häufigkeit in der Datei.
verwenden kann 'HashBag' in Sammlungen IO Apache. – ifly6
Sollte wahrscheinlich auch auf 'List' und nicht auf' String [] 'wechseln. – ifly6
Nein, das solltest du nicht, da das Schleifen in diesem Fall eine schlechte Idee ist. – Silverclaw