在图中查找“连接的组件”
问题描述:
我正在使用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.我始终只保留'图表'的隐喻,因为我需要这个头衔的口才和口才。我知道这个比喻在实用性方面有限。
答
我没有这个这个(你的总体思路)将作为“synonimity”不是过渡性质。
有很多单词具有不同义的同义词。
+1
作为一项家庭作业,这是要求的一部分,以保持简单。 – Dan 2009-05-18 22:46:42
答
不是删除项目,而是将其添加到要忽略的项目列表。
这个问题适合地图缩小(现在找不到一个好的参考) – Adrian 2011-12-17 02:57:09