ArrayList,LinkedList,Vector,HashSet,TreeSet,HashMap,TreeMap,HashTable区别,继承关系

类之间的继承关系——不含接口

类的继承关系不含接口

接口之间的继承接口——不含类

接口的继承关系不含类

1.AbstractCollection(聚类)
1.1 AbstractList(列表)

1.1.1ArrayList(线性表)—在内存里面地址是连续的线性空间,那么对于随机存储会很方便,因为他可以直接到的是对象地址,对于没有元素删减的操作方便

1.1.2.LinkedList(链表)—-在内存里面的地址是随机的,当要找一个元素的时候需要找到第一个元素,然后一直往回找,但是节点与节点之间是链表形式的所以删除和插入元素比较方便
Vector(线性同步表)—在多个线性访问的时候,会进行锁操作,让在同一个时间段只有一个线程访问Vector对象,所以Vector是线程安全的,每个方法都加了synchronized修饰符,除此之外和ArrayList是一样的。

1.1.3.Stack–栈,先进后出push()加到栈顶,poll()从栈顶拿出

1.2AbstractSet(集合)

1.2.1.HashSet(随机集合)HashSet 是哈希表实现的,HashSet中的数据是无序的,可以放入null,但只能放入一个null,两者中的值都不能重复,就如数据库中唯一约束。

1.2.2.TreeSet(有序集合)—TreeSet 是二差树实现的,Treeset中的数据是自动排好序的,不允许放入null值。

1.3AbstractQueue(队列)

1.3.1AbstractQueue实现了Queue接口,可以像排队一样先进先出
offer()在队尾加入对象,poll()从队首取出对象,peek()判断是否还能取出元素,remove()移除元素不能返回null

1.3.2Deque继承了Queue接口可以指定在队前、队末加入和取出对象

public class Test {
    public static void main(String[] args) {
    Queue q=new LinkedList<>();
    q.offer("1");
    q.offer("2");
    q.offer("3");
    System.out.println(q.poll());
    }
}
-----------------------
1

2.AbstractMap(键值对)

首先介绍一下什么是Map。在数组中我们是通过数组下标来对其内容索引的,而在Map中我们通过对象来对对象进行索引,用来索引的对象叫做key,其对应的对象叫做value。这就是我们平时说的键值对。

2.1HashMap与TreeMap

2.1.1HashMap–values是无序的
2.1.1TreeMap–values是有序的

3.Dictionary

HashMap几乎可以等价于Hashtable,除了HashMap是非synchronized的,并可以接受null(HashMap可以接受为null的键值(key)
和值(value),而Hashtable则不行)。

HashMap是非synchronized,而Hashtable是synchronized,这意味着Hashtable是线程安全的,多个线程可以共享一个Hashtab
le;而如果没有正确的同步的话,多个线程是不能共享HashMap的。Java5提供了ConcurrentHashMap,它是HashTable的替代,比HashTable的扩展性更好。

另一个区别是HashMap的迭代器(Iterator)是fail-fast迭代器,而Hashtable的enumerator迭代器不是fail-fast的。所以当有
其它线程改变了HashMap的结构(增加或者移除元素),将会抛出ConcurrentModificationException,但迭代器本身的remove
()方法移除元素则不会抛出ConcurrentModificationException异常。但这并不是一个一定发生的行为,要看JVM。这条同样也
是Enumeration和Iterator的区别。

由于Hashtable是线程安全的也是synchronized,所以在单线程环境下它比HashMap要慢。如果你不需要同步,只需要单一线程
,那么使用HashMap性能要好过Hashtable。HashMap不能保证随着时间的推移Map中的元素次序是不变的。

总结 hashmap非线性安全,hashTable是线性安全的

猜你喜欢

转载自blog.csdn.net/weixin_39841821/article/details/79903692