我至少会使用称为面向对象的漂亮功能:
public class Word implements Comparable<Word> {
private String word;
private TreeSet<Word> synonyms;
//getter and setter
public void addSynonym(final Word word) {
synonyms.add(word);
}
@Override
public int compareTo(final Word other) {
if (this.word == null) {
return -1;
if (other == null || other.getWord() == null) {
return 1;
}
return this.word.compareTo(other.getWord());
}
}
所以我们有一个 Word 类,带有同义词的 TreeSet(用于快速搜索)。例如,这可以从属性文件中填充,例如:
afraid=scared
hello=hey
并且所有单词都可以存储在 TreeSet 中:
private TreeSet<Word> allWords = new TreeSet<Word>();
String key;
String value;
//loop through all properties
Word word = new Word(key);
Word synonym = new Word(value);
if (allWords.contains(word)) {
allWords.tailSet(word).first().addSynonym(synonym); //find the word in the set
} else {
word.addSynonym(synonym);
allWords.add(word);
}
它需要一些改进,如何存储单词存在问题,每个单词应该存储在 allWords 中,还是只存储一组同义词?使用某种 TreeMap 可能会更好,比如
final TreeMap<Word, List<Word>> allWords;
但是,仍然可以帮助您朝着正确的方向前进。无论如何,就在我的头顶上。