少なくとも、オブジェクト指向として知られる気の利いた機能を使用します。
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());
}
}
そのため、同義語の TreeSet (高速検索用) を持つ Word クラスがあります。これは、たとえば次のようなプロパティ ファイルから設定できます。
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 に保存する必要がありますか、それとも類義語の 1 つのグループだけに保存する必要がありますか? そして、次のようなある種の TreeMap を使用する方が良いかもしれません
final TreeMap<Word, List<Word>> allWords;
それでも、正しい方向にあなたを助けるかもしれません.. とにかく私の頭の上から..