Java集合面试题(每日背诵版day02)

1、集合容器有哪些

单列:collection

list:ArrayList、LinkedList、Vector

Set:HashSet、TreeSet

双列:Map

HashMap

TreeMap

HashTable

2、collection和collections有什么区别

collection是单列集合的顶层接口

collections是集合工具类,包含了集合元素进行排序和线程安全的各种操作方法

3、List、Set、Map之间有什么区别

List是单列集合可重复,元素都有索引,可以使用索引操作,元素存取顺序一致

Set是单列集合,元素不可重复,没有索引,不能使用索引操作元素,不能保证元素存取顺序

Map属于双列集合,存储的是键值对

4、HashMap和HashTable有什么区别

都实现了Map接口,都可以存储键值对

HashMap可以使用null作为key或者value,HashTable不可以,HashMap线程不安全效率高,HashTable线程安全效率低

5、如何决定使用HashMap还是TreeMap

TreeMap可以对元素进行排序,所以需要按照一定规则对元素进行排序的话,就选择使用TreeMap,一般情况使用HashMap

6、ArrayList和LinkedList区别

ArrayList底层是数组,查询快增删慢,LinkedList底层是链表,查询慢增删快

7、如何做到数组和List之间的转换

List转换为数组可以调用toArray方法

数组转换List使用asList方法

8、ArrayList和Vector的区别是什么

Vector是线程安全的,在单线程环境下使用ArrayList,扩容时,Vector是100%,ArrayList是50%,所以后者更节省内存

9、哪些集合是线程安全的

Vector:比ArrayList多出了同步化机制

Stack:堆栈类,先进先出

HashTable:比HashMap多出了线程安全

10、ConcurrentHashMap和HashTable的区别

concurrentHashMap锁定的是Map的部分,多线程中访问不同的数据段不会存在竞争,提高并发效率

HashTables是锁定整个map,效率低

11、什么是红黑树

红黑树是一种含有红黑结点并且能够自平衡的二叉查找树

他们所有结点要么是红色要么是黑色,根结点是黑色,每个叶子结点也是黑色,没有两个相连的红色结点,任意一个结点到每个叶子结点的路径都包含相同的黑色结点

12、jdk1.7到1.8HashMap变化

1.7是数组加链表1.8之后是数组加链表加红黑树,1.8之后大于8之后就会转换成红黑树

13、HashMap扩容原理

初始化容量是16,达到阈值后扩容,阈值=最大容量*0.75,每次扩容两倍,扩容是用一个容量更大的数组将原有数组拷贝过来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值