Matlab杂记之 HashTable
2012-12-07 11:06
288 查看
哈希表是一种很有用的数据结构,其可由关键字(key)直接定位到数据值(value);在很多应用中,使用哈希表可以方便高效地达到目的。
但哈希表并不是matlab内置数据类型,所以要在matlab中使用哈希表就比较麻烦了;幸好,matlab提供了一种调用Jave哈希表的方法,让我们可以间接的使用哈希表。
废话少说,直接上代码:
-------------------------------------------------------------------
% 以下代码功能为:统计文本中单词出现的次数(包括数字,但不包括标点)
text ='In computing, a hash table (also hash map) is a datastructure
used to implement an associative array, a structure that can map keysto values. A hash table uses a hash function to compute an index into an arrayof buckets, from which the correct value can be found.';
word_cell = regexp(text,'\w+','match');% 使用正则表达式分割文本中的字符
word_ht = java.util.Hashtable;% 生成哈希表的对象
% 遍历文本单词cell,并统计单词出现次数
for ii =1: length(word_cell)
lower_word = lower(word_cell{ii});% 转换为小写字符
if word_ht.containsKey(lower_word)% 单词是否已在关键字列表中
word_ht.put(lower_word, word_ht.get(lower_word)+1);% 使用 ht.put(key,
value) 将单词及其出现次数保存到哈希表中
else
word_ht.put(lower_word,1);
end
end
word_list = word_ht.keys;% 获取关键字列表
% 输出所有单词及其出现次数(并无排序)
while( word_list.hasNext )%
word_list.hasNext为真说明下一个元素存在,否则已遍历到列表尾
word = word_list.nextElement;% 获取下一个关键字
fprintf('%s : %d\n', word, word_ht.get(word));% 使用 ht.get(key) 可得到key对应的value,即 value
= ht.get(key)
end
--------------------------------------------------------------------------------------------------------------------------------------
【参考资料】
1.Matlab中的HashTable
2.Java文档中的java.util.Hashtable
但哈希表并不是matlab内置数据类型,所以要在matlab中使用哈希表就比较麻烦了;幸好,matlab提供了一种调用Jave哈希表的方法,让我们可以间接的使用哈希表。
废话少说,直接上代码:
-------------------------------------------------------------------
% 以下代码功能为:统计文本中单词出现的次数(包括数字,但不包括标点)
text ='In computing, a hash table (also hash map) is a datastructure
used to implement an associative array, a structure that can map keysto values. A hash table uses a hash function to compute an index into an arrayof buckets, from which the correct value can be found.';
word_cell = regexp(text,'\w+','match');% 使用正则表达式分割文本中的字符
word_ht = java.util.Hashtable;% 生成哈希表的对象
% 遍历文本单词cell,并统计单词出现次数
for ii =1: length(word_cell)
lower_word = lower(word_cell{ii});% 转换为小写字符
if word_ht.containsKey(lower_word)% 单词是否已在关键字列表中
word_ht.put(lower_word, word_ht.get(lower_word)+1);% 使用 ht.put(key,
value) 将单词及其出现次数保存到哈希表中
else
word_ht.put(lower_word,1);
end
end
word_list = word_ht.keys;% 获取关键字列表
% 输出所有单词及其出现次数(并无排序)
while( word_list.hasNext )%
word_list.hasNext为真说明下一个元素存在,否则已遍历到列表尾
word = word_list.nextElement;% 获取下一个关键字
fprintf('%s : %d\n', word, word_ht.get(word));% 使用 ht.get(key) 可得到key对应的value,即 value
= ht.get(key)
end
--------------------------------------------------------------------------------------------------------------------------------------
【参考资料】
1.Matlab中的HashTable
2.Java文档中的java.util.Hashtable
相关文章推荐
- (不定期更新)Matlab学习杂记
- Matlab studying~杂记
- GPU&VS2012&CUDA&matlab&Arrayfire杂记(四)——matlab mex function
- matlab杂记
- GPU&VS2012&CUDA&matlab&Arrayfire杂记(五)——square的例子
- matlab杂记2概率统计
- GPU&VS2012&CUDA&matlab&Arrayfire杂记(六)——c语言转换
- GPU&VS2012&CUDA&matlab&Arrayfire杂记(七)——MFC语言与CUDA
- C# HashTable 杂记
- matlab杂记--图形
- GPU&VS2012&CUDA&matlab&Arrayfire杂记(一)——序
- MATLAB杂记
- GPU&VS2012&CUDA&matlab&Arrayfire杂记(二)——matlab
- matlab杂记--图像处理工具箱
- MATLAB GUI杂记
- GPU&VS2012&CUDA&matlab&Arrayfire杂记(三)——cuda
- 【转】 尺度不变特征变换(SIFT算法)Matlab程序代码测试例子说明(Lowe的代码)
- Matlab 将Y轴反过来
- 我所认识的PCA算法的princomp函数与经历 (基于matlab)
- 使用matlab中的powergui对采集的数据进行谐波分析#实验日记#