Java常用的集合框架以及区别

    今天去一家公司面试时,面试官问了我一个关于常用集合框架的问题,我个人认为我当时是没有回答好的,所以晚上回来时查阅了一些资料,下面是我总结的内容:

    Map接口和Collection接口是所有集合框架的父接口。

    

    HashMap、Hashtable、ConcurrentHashMap的区别

    三者在数据存储层面的机制原理基本一致。

    HashMap不是线程安全的,多线程环境下除了不能保证数据一致性以外,还有可能在rehash阶段引发Entry链表成环,导致死循环,允许null作为key;

    Hashtable使用了synchronized关键字,是线程安全的,能绝对保证数据的一致性,但是性能存在问题,并发线程越多,性能越差,不允许null作为key;

    ConcurrentHashMap也是线程安全的,使用分离锁和volatile等方法,极大地提高了读写性能,同时也能保证在对大多数

情况下的数据一致性,在一个线程向Map中加入Entry的操作没有完全之前,其他线程有可能读不到新加入的Entry。

    

HashMap的底层实现

扫描二维码关注公众号,回复: 2034302 查看本文章

    在java8之前使用的是数组+链表实现,在java8使用了数组+链表+红黑树实现。


    List和Set的区别

    List:有序的,可以包含重复元素;

    Set:无序的,不可以包含重复元素。


    Map:可以把键(key)映射到值(value)的对象,键不能重复;


ArrayList和LinList的区别:

    ArrayList:底层采用数组存储,一次适合查询,不适合增删;

    LinkList:底层采用双向链表,适合增删,不适合查询。

猜你喜欢

转载自blog.csdn.net/qq_41939384/article/details/80947202