一些Java集合口试题

打印 上一主题 下一主题

主题 691|帖子 691|积分 2073

1.总体讲一下Java集合

Java集合主要是由两大接口派生而来。一个是Collection接口,主要用于存放单一元素,主要分成Set,List和Queue三大类;另一个是Map接口,主要用于存放键值对元素,主要实现类就是HashMap、LinkedHashMap、TreeMap。
2.List有哪些具体的实现类?各个数据布局是怎样的?

List主要是ArrayList和LinkedList,ArrayList底层是object数组,ArrayList基于动态数组实现,它允许通过索引快速访问元素,查询时间复杂度:O(1),如果查询的是索引位置的元素。插入元素效率比力慢,因为涉及到前后元素的位移。LinkedList底层是双向链表,双向链表在首尾插入删除元素都比力方便,时间复杂度是O(1),检索效率比力慢,因为要从首尾将指针移动到相应的位置,时间复杂度是O(n)。
3.介绍CopyOnWriteArrayList

底层实现采用了写入时拷贝的思想,增删改操纵会将底层数组拷贝一份,更改操纵在新数组上实行,实现了并发读,读写分离。
写操纵内里利用synchronized保证写写互斥,读操纵foreach没有加锁,适合读多写少的场景
get/迭代器弱划一性:对于读线程,会出现写线程操纵结束后,读线程还是读取到写之前的数组





免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

汕尾海湾

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表