HashMap.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. export default function HashMap() {
  2. //定义长度
  3. var length = 0;
  4. //创建一个对象
  5. var obj = new Object();
  6. /**
  7. * 判断Map是否为空
  8. */
  9. this.isEmpty = function () {
  10. return length == 0;
  11. };
  12. /**
  13. * 判断对象中是否包含给定Key
  14. */
  15. this.containsKey = function (key) {
  16. return (key in obj);
  17. };
  18. /**
  19. * 判断对象中是否包含给定的Value
  20. */
  21. this.containsValue = function (value) {
  22. for (var key in obj) {
  23. if (obj[key] == value) {
  24. return true;
  25. }
  26. }
  27. return false;
  28. };
  29. /**
  30. *向map中添加数据
  31. */
  32. this.put = function (key, value) {
  33. if (!this.containsKey(key)) {
  34. length++;
  35. }
  36. obj[key] = value;
  37. };
  38. /**
  39. * 根据给定的Key获得Value
  40. */
  41. this.get = function (key) {
  42. return this.containsKey(key) ? obj[key] : null;
  43. };
  44. /**
  45. * 根据给定的Key删除一个值
  46. */
  47. this.remove = function (key) {
  48. if (this.containsKey(key) && (delete obj[key])) {
  49. length--;
  50. }
  51. };
  52. /**
  53. * 获得Map中的所有Value
  54. */
  55. this.values = function () {
  56. var _values = new Array();
  57. for (var key in obj) {
  58. _values.push(obj[key]);
  59. }
  60. return _values;
  61. };
  62. /**
  63. * 获得Map中的所有Key
  64. */
  65. this.keySet = function () {
  66. var _keys = new Array();
  67. for (var key in obj) {
  68. _keys.push(key);
  69. }
  70. return _keys;
  71. };
  72. /**
  73. * 获得Map的长度
  74. */
  75. this.size = function () {
  76. return length;
  77. };
  78. /**
  79. * 清空Map
  80. */
  81. this.clear = function () {
  82. length = 0;
  83. obj = new Object();
  84. };
  85. }