您的位置:首页 > 职场人生

Java面试题分享-集合

2019-05-28 09:04 225 查看

问:Collection和Collections的差别
答:Collection 是一个集合接口,比如List、Set,Collections 是一个帮助类,有搜索、排序、线程安全化等操作。

问:ArrayList与Vector的差别
答:这两个类都实现了List接口,它们都是有序集合,线程安全的问题,Vector是线程安全的,Vector默认添加原来的一倍,ArrayList默认添加原来的0.5倍。

问:HashMap与HashTable的差别
答:两者都实现了Map接口,HashTable是早期Java就有的,是线程安全的,HashMap线程不安全的,HashMap同意空的key和value,HashTable不同意。

问:List与Map的差别
答:List是存储单列数据的集合,Map是存储key和value这样双列数据的集合,List中存储的数据是有顺序的而且同意反复,Map其中存储的数据是没有顺序的,存储的key是不能反复的,value是能够反复的,List继承Collection接口,Map不是。

问:LinkedList与ArrayList有什么差别
答:两者都实现的是List接口,ArrayList是基于动态数组实现的,LinkedList是基于链表的数据结构,get訪问List内部随意元素时ArrayList的性能要比LinkedList性能好,对于新增和删除操作LinkedList要强于ArrayList,由于ArrayList要移动数据。

问:List和Set区别
答:首先List和Set都是单列元素的集合,它们有一个共同的父接口Collection,List内的元素讲究有序性,内部元素可反复,Set讲究的是无序性,元素不可反复。

问:HashSet,TreeSet,LinkedHashSet之间的区别方法
答:HashSet只去重,TreeSet去重并排序,实现Comparable接口中的compareTo方法,LinkedHashSet去重并保留插入顺序。

问:HashMap的实现原理
答:HashMap底层就是一个数组结构,数组中的每一项又是一个链表,根据Hash值得到这个元素在数组中的位置,如果数组该位置上已经存放有其他元素了,那么在这个位置上的元素将以链表的形式存放,新加入的放在链头,最先加入的放在链尾,获取时直接找到hash值对应的下标,在进一步判断key是否相同,从而找到对应值,HashMap中的元素个数超过数组大小*loadFactor时,就会进行数组扩容即扩大一倍,loadFactor的默认值为0.75。

问:列举线程安全的类
答:StringBuffer ,Vector,Hashtable,Enumeration,Stack。

问:介绍下Java并发编程包concurrent中的ConcurrentMap
答:更好的并发性能,在你从中读取对象的时候ConcurrentHashMap,并不会把整个Map锁住只是把 Map 中正在被写入的部分进行锁定。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: