容器
18、java中容器都有哪些?
java中容器分为单列的集合和双列的集合;
单列集合的顶级接口是collection,子接口有list、queue和set,其中list的实现类有vector、arraylist和linkedlist,其中vector有子类stack,queue有实现类linkedlist和priorityqueue,set有实现类hashset和treeset;
双列的集合有顶级接口map,实现类有hashmap、hashtable和treemap,其中hashmap有子类linkedhashmap,hashtable有子类properties。
19、collection和collections有什么区别?
collect是java集合的一个顶级接口,而collections是java集合的一个工具类,里面有许多操作java集合的方法。
20、list、set、map之间的区别?
list接口是有序、可重复、有索引,set接口是无序、不重复、无索引,map的key不可重复;list和set继承自collection接口,而map本身便是顶级接口,list、set、map三者之间的实现类也是各不相同;常用方法有些也不同,list和set放元素都是用add,map放元素使用put,map还有keyset和values方法将key和value形成一个集合;
21、hashmap和hashtable有什么区别?
底层的数据结构不一样,hashmap底层是数组+链表+红黑树,而hashtable底层是数组+链表;hashtable是线程安全的,hashmap线程不安全;hashmap运行空键值而hashtable不允许。
22、如何决定使用hashmap还是treemap?
hashmap的底层是数组+链表+红黑树,有数组链表还有树的特性,因此适合插入删除和定位元素。
tresmap底层是红黑树,保留有树的特性,如果有大量的数据需要遍历,使用treemap无疑是个更好的选择。
23、说一说hashmap的实现原理?
jdk1.8之前hashmap的底层是数组+链表;而jdk1.8之后hashmap的底层是数组+链表+红黑树;当存入一个元素时,先通过hascode()方法算出这个元素在哈希表中存放的位置,这期间如果有大量的元素存在哈希表的同一个位置,则该位置会形成一个链表,当链表的长度大于8时,此链表就会转为红黑树。
24、说一说hashset的实现原理?
hashset是基于hashmap实现的,hashset的值存放在hashmap的key中,hashmap的值统一为present。
接下来的都会懒得写,因为到饭点了,饿死了溜了溜了。