Android中汉字转拼音的内存优化处理
来源:互联网 发布:阿里云 l2tp 编辑:程序博客网 时间:2024/06/05 18:07
本人博客原文
当我们对中文名字排序时,往往采用是的用其拼音来排序的。Android中通过汉字的unicode编码来找到其对应的拼音。汉字unicode编码和其拼音是放在资源文件chinese_unicode_to__pinyin.txt中。
其结构很简单,比如:
示例1:
3007 ling
4E00 yi
4E01 ding
4E02 kao
它正好对应java.util.Properties所需要的格式。但是由于它继承于Hashtable,他使用的是哈希桶来把汉字unicode编码和其拼音对应,有很多哈希桶被创建而没实际使用,造成大量的哈希桶浪费,实际占用内存达2M多。
考虑到chinese_unicode_to__pinyin.txt本身的数据结构特点,我们在采用二维数组的索引来对应汉字unicode编码,第一维数组的下标对应汉字unicode编码的高8表,第二维数组的下标对应汉字unicode编码的低8表,第二维数组数存的字符串来对应汉字拼音的引用。如果在存一个汉字的拼音时,前面有汉字的拼音和他一样时,则使用这个该汉字的拼音的引用就可以了,而不必再创建新的字符串。
对于示例1的汉字和拼音就这样存储:
pinyinTable[0x30][0x0f]="ling"
pinyinTable[0x4E][0x00]="yi"
pinyinTable[0x4E][0x01]="ding"
pinyinTable[0x4E][0x02]="kao"
这样使用MAT查看占用内存就变为1M多,但是实际计算却主要是引用(一个引用占32位,即4个字节)占用的内存比较多,大概是6*(2~12)*4=96k
另外很多汉字的拼音都是相同,所以使用白盒测试显示字符串占用的更少。MAT显示的占用内存仍然有1M,应该是重复计算字符串引起的。
- Android中汉字转拼音的内存优化处理
- Android 拼音转汉字的第三方处理
- asp 汉字转拼音-多音字的处理
- android 汉字转拼音
- android 汉字转拼音
- android 汉字转拼音
- Android 汉字转拼音
- Android汉字转拼音
- Android 汉字转拼音
- android汉字转拼音
- android汉字转拼音
- Android中汉字转换成拼音报错的处理解决.....
- Android下汉字转拼音的方法
- android汉字转拼音的完美解决方案
- android中汉字转为拼音
- 汉字转拼音处理javascript
- 汉字转拼音的导致的内存溢出
- 汉字转拼音,主要是多音字的处理
- 闲聊linux中的input设备(7) 爱情的结晶
- MSSQL 笔记三
- win RT != winRT inside Win 8
- 闲聊linux中的input设备(8) 面对美女,我们将何去何从
- ROS学习记录
- Android中汉字转拼音的内存优化处理
- 基于Game Center的多人游戏简介
- SVN版本问题
- awk学习
- uva 10746 - Crime Wave - The Sequel(最小费用流+精度)!!没提交对-求助
- 给一个浮点数序列,取最大乘积子序列的值,例如 -2.5,4,0,3,0.5,8,-1,则取出的最大乘积子序列为3,0.5,8
- 生命的礼物
- 泛型
- Java引用