代码改变世界

随笔分类 -  java

《Java编程思想》之对象的集合(数组、List、Set、Map)二

2012-02-03 22:07 by java线程例子, 253 阅读, 收藏,
摘要: 上接:《Java编程思想》之对象的集合(数组、List、Set、Map)一22、使用自己创建的类作为HashMap的“键”,需要同时覆盖hashCode()和equals()。原因如下:1).默认的hashCode()继承自Object,它默认是使用对象的地址计算散列码。因此即使俩个对象的实例的内容相同,对象的地址是不同的,所以默认的hashCode()得到的散列码是不同的。如下例子:import java.util.HashMap; import java.util.Map; public class TestHashMap{ private int id; public Tes... 阅读全文

Trie的应用及拼写检查器的优化

2011-12-29 22:11 by java线程例子, 222 阅读, 收藏,
摘要: 之前实现的拼写检查器,是用Hash表来保存语言模型(Language Model)。每个单词插入到Hash表时都要先计算一个Hashcode值来作为Id。因此插入一个单词到Hash表(不冲突的情况下)与查询一个单词的效率都是O(len),其中len是单词的长度。我们也可以用一种叫Trie的树形结构来保存语言模型。Trie的结构非常简单,举个简单的例子,对于下面这些单词:an, ant, all, allot, alloy, aloe, are, ate, be我们可以构建出这样一个Trie树,每条支路都代表一个字母,由根节点出发到叶子节点所经过的路径上的字母就组成一个单词。其中,根节点不包含字 阅读全文