美文网首页
集合面试总结

集合面试总结

作者: 落云和枫 | 来源:发表于2019-03-13 10:35 被阅读0次

    1. 你所知道的集合类都有哪些?主要方法

            最常用的集合类是List 和 Map。List的具体实现包括ArrayList 和 Vector,它们可变大小的列表,比较适合构建,存储,和操作任何类型对象的元素列表,List适用于按数值索引访问元素的情形。Map提供了一个更通用的元素存储方法。Map集合类用于存储元素(称作“键”和"值"),其中每个键映射到一个值。

    2. Collection FrameWork如下:

            conllection 包括  list(LinkedList 和 Vector ,arraylist)  和 List

             Map 包括 HashMap  Hashtable

    3. ArrayList 和 Vector 区别?

             1) 同步性:Vector是线程安全的(同步的),而ArrayList是线程不安全的;

              2)数据增长:当需要增长时,Vector默认增长一倍,而ArrayList却是一半。

    4. List   Map  Set 三个接口,存取元素时,各有什么特点?

            List以特点次序来持有元素时,可有重复元素,Set无法拥有重复元素,每部排序。Map保存key-value值,value可多值。

    5. set 里的元素不能重复。那么用什么方法来区分重复与否呢?

            Set里元素是不能重复的,用equals() 方法区分重复与否。覆盖equals() 方法用来判断对象的内容是否相同,而"==" 来判断地址是否相等,用来确定引用值是否是同一对象。

    6. HashMap 和 Hashtale的区别?

            二者都实现Map接口,是将唯一键映射到特点的值上,主要区别与:

     1. HashMap没有排序,允许一个null键和和多个null值,而HashMap不允许。

     2. HashMap把HashMap的contains方法去掉了,改成containvalue和containKey,因为contains方法容易让人引起误解。

    3. Hashtable继承自Dictonary类,HashMap是java1.2引进的Map接口的实现。

    4. Hashtable的方法是同步的,而HashMap不是,在多个线程访问Hashtable时,不需要为它的方法实现同步,而HashMap就必须为之提供外同步,

    7. Collection 和 Collections的区别

        Collection是java.uitl 下的接口,他是各种集合的父接口,继承于它的接口主要有set 和list;Conllecitons是个java.util下的类,是针对集合的帮助类,提供一系列静态方法对各种集合的搜索,排序,线程安全化等操作。

    8. ArrayList  和   LinkedList的区别

        linkedlist实现 list 和 deque接口,一般称为双向链表。

        linkedList 一般在插入和删除数据时的效率更高。

        而ArrayList 多用于查询操作

    线程安全的map

    1. synchronizedMap

            这种是直接使用工具类里面的方法创建SynchronizedMap, 把传入进行的HashMap对象进行了包装同步而已,看出SynchronizedMap的实现方式是加了对象锁,每次对HashMap的操作,都要先获取mutex的对象锁才能进入,所以性能也不会比HashTable好到那里去,也不建议使用。

    2. ConcurrentHashMap

    这个也是最推荐使用的线程安全的Map,也是实现方式最复杂的一个集合,每个版本的实现方式也不一样,在jdk8之前是使用分段加锁的一个方式,分成16个桶。每次只加锁其中一个桶,而在jdk8之后又加入了红黑树和CAS算法来实现。

    相关文章

      网友评论

          本文标题:集合面试总结

          本文链接:https://www.haomeiwen.com/subject/nuwapqtx.html