龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > Javascript编程 >

深入探究J2ME Hashtable实现原理(1)(2)

时间:2013-03-06 14:58来源:未知 作者:admin 点击:
分享到:
内部类 Hashtable有2个内部类 HashtableEntry--用于存放key-value,nextElement的类。 classHashtableEntry{ inthash; Objectkey; Objectvalue; HashtableEntrynext; } HashtableEnumerator遍历的枚

内部类

Hashtable有2个内部类

HashtableEntry--用于存放key-value,nextElement的类。

  1. classHashtableEntry{  
  2. inthash;  
  3. Objectkey;  
  4. Objectvalue;  
  5. HashtableEntrynext;  
  6. }  

HashtableEnumerator遍历的枚举类。

  1. classHashtableEnumeratorimplementsEnumeration{  
  2. booleankeys;  
  3. intindex;  
  4. HashtableEntrytable[];  
  5. HashtableEntryentry;  
  6.  
  7. HashtableEnumerator(HashtableEntrytable[],booleankeys){  
  8. this.table=table;  
  9. this.keys=keys;  
  10. this.index=table.length;  
  11. }  
  12.  
  13. publicbooleanhasMoreElements(){  
  14. if(entry!=null){  
  15. returntrue;  
  16. }  
  17. while(index-->0){  
  18. if((entry=table[index])!=null){  
  19. returntrue;  
  20. }  
  21. }  
  22. returnfalse;  
  23. }  
  24.  
  25. publicObjectnextElement(){  
  26. if(entry==null){  
  27. while((index-->0)&&((entry=table[index])==null));  
  28. }  
  29. if(entry!=null){  
  30. HashtableEntrye=entry;  
  31. eentry=e.next;  
  32. returnkeys?e.key:e.value;  
  33. }  
  34. thrownewNoSuchElementException(  
  35. /*#ifdefVERBOSE_EXCEPTIONS*/  
  36. ///skipped"HashtableEnumerator"  
  37. /*#endif*/  
  38. );  
  39. }  
  40. }  
  41.  

代码写的是相当的简介。有一些比较技巧性的用法也是相当的不错,比如:

  1. if(entry==null){  
  2. while((index-->0)&&((entry=table[index])==null));  
  3. }这段写的是相当的好,可见作者的功力,循环变量table  
  4. while(index-->0)  
  5. //循环变量,查看是否有下一个元素,  
  6. if((entry=table[index])!=null){  
  7. returntrue;  
  8. }  

了解了Hashtable的数据存放格式,我们看看存放的关键逻辑在put,remove,get方法中存在。

  1. intindex=(hash&0x7FFFFFFF)%tab.length;  
  2.  

这样的函数,这个函数的意义上,根据散列值来获取对象的存储位置。
 

精彩图集

赞助商链接