Java 在字典中查找单词
我有一个小Java项目,在学校里制作一本字典 现在很简单,这里是Word类Java 在字典中查找单词,java,dictionary,search,data-structures,Java,Dictionary,Search,Data Structures,我有一个小Java项目,在学校里制作一本字典 现在很简单,这里是Word类 public class Word implements Comparable<Word> { private String word_target; private String word_explain; /*Getter and setter methods.*/ @Override public boolean equals(Object o) {
public class Word implements Comparable<Word> {
private String word_target;
private String word_explain;
/*Getter and setter methods.*/
@Override
public boolean equals(Object o) {...}
@Override
public int hashCode() {...}
@Override
public int compareTo(Word otherWord) {
return this.word_target.compareTo(otherWord.word_target);
}
}
公共类Word实现了可比较的{
私有字符串单词_目标;
私有字符串单词_解释;
/*Getter和setter方法*/
@凌驾
公共布尔等于(对象o){…}
@凌驾
public int hashCode(){…}
@凌驾
public int compareTo(Word其他Word){
返回this.word\u target.compareTo(otherWord.word\u target);
}
}
还有字典课
public class Dictionary {
protected static TreeSet<Word> words = new TreeSet<>();
}
公共类字典{
受保护的静态树集字=新树集();
}
我的问题是:如果我有一个字符串输入,它是一个单词,我必须找到它的含义,我如何使用一个用户定义对象的树集(在我的例子中,它是单词)来实现这一点?在我的例子中,什么是最好的搜索算法
我尝试使用TreeSet,因为它会自动对键盘上的输入数据进行排序,这在我显示字典中的所有单词时非常方便。集合中有contains方法,请检查javadocs。在这个简单的场景中,可以尝试使用
TreeMap
而不是TreeSet
?然后您可以使用字符串作为键。我建议您使用TreeMap
whereword\u target
作为键,word\u explain
作为值,然后您可以使用word轻松地从地图中获取数据,并且数据也按单词排序。TreeSet
已经使用了运行在O(log(n))中的最佳搜索算法@Omid.N问题是OP希望通过word\u target
而不是通过word查找,所以如何使用contains方法?一种方法是创建Word实例,而不使用Word_解释和if hashcode,并通过它比较正确定义的搜索。但从某种意义上说,这将是非常糟糕的结构。