java – 构建Dictionary的数据结构
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 构建Dictionary的数据结构,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1787字,纯文字阅读大概需要3分钟。
内容图文
我正在寻找一些高层次的想法/想法帮助我构建Dictionary的数据结构.我有一个传统的“产品(药物)搜索系统”,它本质上非常缓慢和复杂.我们需要完全重新构建系统,以获得高效且可维护的解决方案.
为了简化问题,我举了一个’Dictionary’的例子(我希望我的新系统表现得像Dictionary)
>我应该能够存储Word,描述和一些同义词(等效的仿制药),
>单词不应重复
>同义词也将是Word的实例(它应该包含单词,描述和同义词的行为).
>更快的搜索
用例
>搜索单词时,显示其含义和同义词
>更快的搜索
>应该可以删除同义词
>添加新单词,应该能够添加到任何现有单词的同义词中
我创建了一个如下所示的数据结构
Class Word {
String meaning;
List<Word> synonyms;
}
为了存储Words,我想使用TreeSet
因为
TreeSet provides an implementation of the Set interface that uses a
tree for storage. Objects are stored in sorted, ascending order.
Access and retrieval times are quite fast, which makes TreeSet an
excellent choice when storing large amounts of sorted information that
must be found quickly.
或者我可以使用HashMap,其中单词和同义词单词实例的哈希码相等,这可以实现更快的检索.
我仍然可以看到很多挑战
>当添加新单词时如何链接其同义词
>当有大量单词时,查找会很慢
>编辑单词也应反映同义词,反之亦然
任何想法/输入/技巧都会受到高度重视
解决方法:
对于单词搜索和单词完成要求,Trie将是一个快速的选择.看看Java实现:
In computer science, a trie, also called digital tree and sometimes
radix tree or prefix tree (as they can be searched by prefixes), is an
ordered tree data structure that is used to store a dynamic set or
associative array where the keys are usually strings.
http://pathakalgo.blogspot.in/2012/11/trie-data-structure-implementation-in.html
对于同义词链接,您可以维护Map< String,LinkedList< String>>.一旦使用Trie找到一个单词,获取相关的sysnonyms将是O(1).
内容总结
以上是互联网集市为您收集整理的java – 构建Dictionary的数据结构全部内容,希望文章能够帮你解决java – 构建Dictionary的数据结构所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。