Für eine Zuweisung wurde ich gebeten, ein TXT-Dokument in eine Hashmap vorzuverarbeiten, um eine effiziente Wortsuchfunktion zu haben. "Um eine effiziente Wortsuche zu ermöglichen, bearbeitet Ihr Code das Dokument vor und speichert alle im Dokument gefundenen Wörter und die Zeilen, in denen sie sich in einer Hash-Tabelle befinden (die Wörter sind die Schlüssel und die Zeilen die Werte)." Ich kann nicht für das Leben von mir herausfinden, warum ich den alten Wert von einem Schlüssel mit einem neuen Wert für den Schlüssel nicht ersetzen kann. Hier ist der Konstruktor, der das Dokument vorverarbeitet.Vorverarbeitung txt Dokument in eine Hashmap mit String als Schlüssel, und Integer ArrayList als Wert
HashMap<String, ArrayList<Integer>> map = new HashMap<String, ArrayList<Integer>>();
public wordSearch() {
char charChecker;
String word;
ArrayList<Integer> count = new ArrayList<Integer>();
try{
URL url = new URL("http://homes.soic.indiana.edu/classes/spring2016/csci/c343-yye/docu.txt");
Scanner in = new Scanner(url.openStream());
int lineNumber = 1;
while(in.hasNext()) {
String str = in.nextLine();
for(int i = 0; i < str.length(); i++) {
for(int j = i+1; j < str.length(); j++) {
charChecker = str.charAt(j);
//check for word
if(charChecker == ' ' ||
charChecker == ',' ||
charChecker == '.' ||
charChecker == '\n') {
word = str.substring(i, j);
//if word is already in HashMap
if(this.map.containsKey(word)) {
count = this.map.get(word);
count.add(lineNumber);
//System.out.println("[" + word + ", " + count.toString() + "]");
this.map.put(word, count);
}
//otherwise add word to HashMap
else {
count.add(lineNumber);
System.out.println(count.toString());
this.map.put(word, count);
//System.out.println("[" + word + ", " + count.toString() + "]");
}
i = j+1;
count.clear();
}
}
}
lineNumber+=1;
}
in.close();
}catch(IOException e) {
System.out.println(e.getMessage());
}
System.out.println(this.map.toString());
}
Irgendein Rat, wohin man von hier geht, würde geschätzt werden.
Wow, das war so einfach. Ich danke dir sehr – rsorce