hashmap和hashtable,arraylist和vector的区别

Posted guoDaXia的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hashmap和hashtable,arraylist和vector的区别相关的知识,希望对你有一定的参考价值。

hashmap线程不安全,hashtable线程安全

hashmap允许使用 null 值和 null 键。(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 

hashtable任何非 null 对象都可以用作键或值。为了成功地在哈希表中存储和获取对象,用作键的对象必须实现 hashCode 方法和 equals 方法。

 

arraylist线程不安全,vector线程安全

arraylist和vector的初始大小都是10.

vector:向量的大小大于其容量时,容量自动增加的量。如果容量的增量小于等于零,则每次需要增大容量时,向量的容量将增大一倍。

Arraylist默认扩充1.5倍。

JDK1.6中的源码:

// 确定ArrarList的容量。
// 若ArrayList的容量不足以容纳当前的全部元素,设置 新的容量=“(原始容量x3)/2 + 1”
    public void ensureCapacity(int minCapacity) {
        modCount++;  // 将“修改统计数”+1
        int oldCapacity = elementData.length;
        if (minCapacity > oldCapacity) {
            Object oldData[] = elementData;
            int newCapacity = (oldCapacity * 3)/2 + 1;
            if (newCapacity < minCapacity)
                newCapacity = minCapacity;
            elementData = Arrays.copyOf(elementData, newCapacity);
        }
    }

 

以上是关于hashmap和hashtable,arraylist和vector的区别的主要内容,如果未能解决你的问题,请参考以下文章

面试题:写出常见线程安全与线程不安全的类

Java复习----集合/容器

HashMap与HashTable的区别

学习笔记之Java笔记

HashMap和HashTable的区别是什么

HashMap和Hashtable的区别?