HashTable

    xiaoxiao2021-03-25  81

    1.函数都是同步的,线程安全,不允许null key或null value 2.contains方法中使用的遍历

    for (int i = tab.length ; i-- > 0 ;) { for (Entry e = tab[i] ; e != null ; e = e.next) { if (e.value.equals(value)) { return true; } } }

    3.put时没有对key进行再次hashcode,使用的是key本身的hashcode,所以对于Entry索引判断与HashMap不同:

    int hash = key.hashCode(); int index = (hash & 0x7FFFFFFF) % tab.length;

    4.HashTable中hash数组默认大小是11,增加的方式是 old*2+1。 在索引判断中,运用的是取余方式,质数的取余分散效果较好,这里虽然不是质数,但也是奇数。

    5.遍历方式 第一个是遍历keySet,再根据每个key获取value 第二个是遍历entrySet,从entrySet获取key与value 第三个是通过Enumeration遍历Hashtable的key或value

    Enumeration enu = table.keys(); while(enu.hasMoreElements()) { System.out.println(enu.nextElement()); } Enumeration enu = table.elements(); while(enu.hasMoreElements()) { System.out.println(enu.nextElement()); }

    参考:http://blog.csdn.net/zheng0518/article/details/42199477

    转载请注明原文地址: https://ju.6miu.com/read-39651.html

    最新回复(0)