我正在使用HashMap <String,ArrayList<String>>
構建一個同義詞庫來保存單詞及其同義詞(需要此數據結構)。在圖中查找「連接的組件」
爲了賦值的目的,同義關係被認爲是可傳遞的。 (我們可以將詞庫想象成一個圖)。 我試圖完成的是在一個文本文件中打印這個圖形,並在每一行上連接一個組件。換句話說,所有可以彙集在一起的單詞都應該放在一行上。
public void save() {
try {
FileWriter fw = new FileWriter(defaultDefinitionFile);
BufferedWriter out = new BufferedWriter(fw);
Set<String> keys = thesaurus.keySet();
Iterator<String> ite = keys.iterator();
while (ite.hasNext()) {
String key = ite.next();
out.write(key);
ArrayList<String> synonyms = thesaurus.get(key);
Iterator<String> i = synonyms.iterator();
while (i.hasNext()) {
String syn = i.next();
out.write(","+syn);
keys.remove(syn);
}
out.write("\r\n");
}
out.close();
fw.close();
}
catch (Exception e) {
System.out.println("Error writing to file");
e.printStackTrace();
}
}
這是我想象這樣的情況發生:
打印Word與它的每一個同義詞一起,然後從數據結構中刪除這些同義詞,所以我們沒有重複的線路。
問題是當我迭代hashmap的內容時,我無法刪除任何東西。
我失蹤的任何替代方法?
P.S.我始終只保留'圖表'的隱喻,因爲我需要這個頭銜的口才和口才。我知道這個比喻在實用性方面有限。
這個問題適合地圖縮小(現在找不到一個好的參考) – Adrian 2011-12-17 02:57:09