API学习HashTable

向右看齐 2022-06-11 03:51 215阅读 0赞
  1. package com.wonders.week01.collection;
  2. import java.util.Collection;
  3. import java.util.Enumeration;
  4. import java.util.HashMap;
  5. import java.util.Hashtable;
  6. import java.util.Map;
  7. import java.util.Map.Entry;
  8. import java.util.Set;
  9. /**
  10. * JDK1.7
  11. * HashTable
  12. * (1)这个类实现了一个哈希表,它将键映射到值。任何非空对象都可以作为键或值使用
  13. * (2)为了从哈希表中恢复和存储对象,该对象必须重写hashCode和equals方法
  14. * (3)有两个参数影响着hashtable:初始容量和负载因子,初始容量代表的是在哈希表中可以存储的数量,
  15. * 初始化容量仅仅是当hashtable被创建时的一个容量大小。
  16. * (4)一般来说,默认的负载因子大小是0.75,在时间和空间的消耗方面提供了一个很好的平衡,
  17. * (5)在查找中,更高的值会增加时间复杂度但是会降低空间的的消耗。
  18. * (6)线程安全的类
  19. * @author liyongyong
  20. *
  21. */
  22. public class HashTableTest {
  23. public static void main(String[] args) {
  24. Map<String, Integer> map = new HashMap<String, Integer>();
  25. map.put("aaa", 1);
  26. map.put("bbb", 2);
  27. map.put("ccc", 3);
  28. Hashtable<String , Integer> numbers = new Hashtable<String, Integer>();
  29. //在hashtable中的key中映射value,其中key和value都不可以为null
  30. numbers.put("one", 1);
  31. numbers.put("two", 2);
  32. numbers.put("three", 3);
  33. //返回hashtable中key的个数
  34. int size = numbers.size();
  35. System.out.println("numbers集合中的元素个数为: " + size);
  36. //判断是否在hashtable中不存在键值对的映射
  37. boolean flag = numbers.isEmpty();
  38. System.out.println("如果在Hashtable中存在键值对映射,返回true,否则返回false : " + flag);
  39. //返回hashtable中的键
  40. Enumeration<String> key = numbers.keys();
  41. while (key.hasMoreElements()) {
  42. String string = (String) key.nextElement();
  43. System.out.print(string + " ");
  44. }
  45. System.out.println();
  46. //返回hashtable中的值
  47. Enumeration<Integer> value = numbers.elements();
  48. while (value.hasMoreElements()) {
  49. Integer integer = (Integer) value.nextElement();
  50. System.out.print( integer + " ");
  51. }
  52. System.out.println();
  53. //判断是否有键值对存在于hashtable中,参数是一个对象类型,
  54. //传入的参数应该是value而不是key
  55. boolean exist = numbers.contains(1);
  56. System.out.println("是否存在键值对 :" + exist) ;
  57. //如果在hashtable中有一个或者多个key都映射了这个value,则返回true
  58. boolean containsValue = numbers.containsValue(2);
  59. System.out.println("存在映射 :" + containsValue);
  60. //如果这个具体的对象是hashTable中的一个key,则返回true.
  61. boolean containsKey = numbers.containsKey("one");
  62. System.out.println("存在这个key : " + containsKey);
  63. //返回在hashtable中键所映射的value,如果这个key在hashtable中不存在,则返回null
  64. Integer v1 = numbers.get("one");
  65. System.out.println("该键所映射的值是: " + v1);
  66. //从hashtable中根据key移除相关的键值对,如果key在hashtable中不存在,则这个方法什么也不会做
  67. numbers.remove("one");
  68. Enumeration<Integer> v = numbers.elements();
  69. System.out.print("remove以后的结果:");
  70. while (v.hasMoreElements()) {
  71. Integer integer = (Integer) v.nextElement();
  72. System.out.print(integer + " ");
  73. }
  74. System.out.println();
  75. //把一个map集合中的所有键值对都添加到具体的hashtable集合中
  76. numbers.putAll(map);
  77. Enumeration<String> v2 = numbers.keys();
  78. System.out.print("添加map以后的所有key:");
  79. while (v2.hasMoreElements()) {
  80. String str = (String) v2.nextElement();
  81. System.out.print( str + " ");
  82. }
  83. Enumeration<Integer> v3 = numbers.elements();
  84. System.out.print("添加map以后的所有value:");
  85. while (v3.hasMoreElements()) {
  86. Integer integer = (Integer) v3.nextElement();
  87. System.out.print( integer + " ");
  88. }
  89. System.out.println();
  90. //清除hashtable中的所有key
  91. //numbers.clear();
  92. //创建一个hashtable的浅克隆,hashtable自身的所有结构层次都会被复制
  93. //但是key和value是不会被复制的。返回值类型是一个对象
  94. numbers.clone();
  95. //返回hashtable中的所有key,以set集合的形式返回
  96. Set<String> set = numbers.keySet();
  97. for (String string : set) {
  98. System.out.print(string + " ");
  99. }
  100. System.out.println();
  101. //以键值对的形式返回hashtable中的键值对,等号的左边是key,等号右边是value
  102. Set<Entry<String, Integer>> sm = numbers.entrySet();
  103. for (Entry<String, Integer> entry : sm) {
  104. System.out.print( entry + " ");
  105. }
  106. System.out.println();
  107. Collection<Integer> res = numbers.values();
  108. for(Integer result : res){
  109. System.out.print(result + " ");
  110. }
  111. }
  112. }

这里写图片描述

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,215人围观)

还没有评论,来说两句吧...

相关阅读