我是Java新手,作为一个学习项目,我想编写一个小词汇应用程序,以便用户可以自己测试,但也可以搜索条目。但是,我很难为此找到合适的数据结构,即使花了最后几天谷歌搜索它,我仍然不知所措。
以下是我对词汇对象的想法:
import java.io.*;
class Vocab implements Serializable {
String lang1;
String lang2;
int rightAnswersInARow; // to influence what to ask during testing
int numberOfTimesSearched; // to influence search suggestions
// ... plus the appropriate setter and getter methods.
}
现在进行测试,乍一看ArrayList
似乎是最合适的(选择一个随机数,然后选择要测试的对象)。但是,如果我还要考虑rightAnswersInARow
并更频繁地询问数字较低的词汇,该怎么办?我的方法是计算每个值的对象数,给每个值一个间隔(例如rightAnswersInARow = 0
的间隔将被因子3夸大)然后从那里随机选择。
但即使我每次都经过ArrayList
,得到rightAnswersInARow
并确定间隔......我如何将计算出的数字映射到正确的索引,因为元素没有排序?那么TreeSet
会更合适吗?
要搜索两种语言的条目,甚至可能会添加包含建议字词的下拉列表(例如在Google的搜索中),我需要快速找到字符串(HashMap
?)。或者可以通过2+(每种语言一个)TreeSet
来到达以这些字母开头的第一个元素,然后从那里选择接下来的几个元素?但这意味着搜索总会提出相同的词语,而忽略了搜索最多的词语。
你会建议什么?每个值对都有HashMap
并手动实现关系数据库之类的东西吗?
提前谢谢! :)