java容器(集合)

前两天去面试:
面试官:容器了解吗?
我:不太清楚(内心戏:类似与Docker容器这么深层的技术,我就只是听说过,还是直接说不清楚,省的他继续往下问)
后来被毙了,今天想来学习下容器,然而我发现搜到的都是java集合,原来问的不是Docker容器,生无可恋脸!
容器的概念:如果有一个类专门用来存放其它类的对象,这个类就叫做容器,或者就叫做集合
血的教训
那今天就把java常用集合(容器)再总结下:
 
  名称 原理 特性 线程安全 优点 缺点
List
ArrayList 定长数组实现(超过长度会新建扩容数组后将数据复制到新数组) 有序,可重复 索引快 在增删距离末尾距离长的情况下,效率慢
LinkedList 使用双向链表结构,记录头尾节点及数量 有序,可重复 增删快 索引距离头尾长的情况下效率慢
Map HashMap 定长数组结构,使用Hash散列分布元素,Hash碰撞使用拉链法解决,即每个元素为一个单向链表,对于Hash值一致的多条数据向后追加 无序,Key不可重复 增删查快 遍历慢
LinkedHashMap 继承HashMap并维护一个双向链表保证有序 有序,Key不可重复 增删查遍历快 在hashmap的基础上附加了一个双向链表,所以不如HashMap效率高
TreeMap 红黑二叉树结构 有序(非添加顺序,通过大小排序) 索引快
增删效率慢
CurrentHashMap 同HashMap 无序 是(使用volatile保证并发读取可见性,使用synchronized保证操作) 增删查快 遍历慢

猜你喜欢

转载自www.cnblogs.com/404Not-Fund/p/9009181.html