Java集合框架面试准备
2020-07-21 11:03:01 0 举报
Java集合框架面试准备
作者其他创作
大纲/内容
Map
TreeSet
TreeSet底层是对TreeMap的封装。不允许插入null值,插入后的元素会进行排序。非线程安全。
①
HashMap
Collection
Vector
LinkedList
线程不安全
底层:底层采用数组的结构,在创建的时候默认长度为空。当添加第一个数据时,将底层的Object数组初始化为一个长度为10的空数组,每次扩容会扩容至原空间的1.5倍。优缺点:因为底层是使用的数组结构,所以具有数组的特性,也就是随机访问。随机访问只需要使用数组的首个元素的地址+索引*每个元素的大小,就可以算出待访问的元素地址。增删比较慢,数组需要保证内存连续,ArrayList底层使用的是arraycopy对元素进行移动,这样可能比较耗时。线程不安全。(实际修改次数和预期修改次数)
List
解决线程安全的方法:①使用比较老的Vector②使用集合工具类将集合转为线程安全的,方法为Collections.synchronizedList(list)
HashSet
HashSet底层其实就是对HashMap的封装,在执行add方法的时候,将要存入的值当作HashMap的键,HashMap的值为一个Object对象。所以HashSet的特点是插入的元素时无序的,支持插入null值。线程不安全。
ArrayList
底层:底层采用的是双向链表的结构,LinkedList源码中有个Node内部类,用三个成员变量分别代表当前的数据、头指针和为指针。在获取元素的时候,采用了二分的思想,如果查找的元素位置大于size的一半的话就从后往前找否则就从前往后找。优缺点:增删比较快,查询比较慢。查询慢的原因是因为需要挨个遍历每一个节点。线程不安全的
Set
0 条评论
下一页