1.HashMap的resize过程是什么样的?
采用hash表数据加链表的形式,1.8以后引入了红黑树的数据结构,初始化数组长度为16,当数组长度到0.75时扩容,链表长度大于8时转为红黑树,红黑树的长度小于6时转为链表结构,
数组中的元素容量超过了阙值的0.75就会触发扩容长度.
2.HashMap你经常用在哪个地方?
(1)电子商务的应用中使用HashMap作为缓存
(2)金融领域出于性能的考虑非常多的运用HashMap和ConcurrentHashMap
(3)controller层向前台返回数据可以用map封装数据
(4)mybatis中的map可以作为参数或者封装结果集
3.HashMap和Hashtable的区别?
(1)hashMap去掉了HashTable 的contains方法,但是加上了containsValue() 和containsKey()方法.
(2)hashTable同步的,而hashMap是非同步的,效率比hashTable要高.
(3)hashMap允许空键值,而hashTable不允许.
4.List,Map,Set三个接口,存取元素时,各有什么特点?
List有序可重复
Set无序不重复
Map一般都是键值对key-value值,value可多个值
5.HashSet是如何保证元素唯一性的呢?
通过元素的两个方法hashCode和equals来完成的
6.TreeSet怎么对集合中的元素进行排序?
TreeSet底层数据结构是二叉树
(1)让元素自身具备比较性,需要元素对象实现Comparable接口,覆盖compareTo方法
(2)让集合自身具备比较性,需要定义一个实现了Comparator接口的比较器,覆盖compare方法.
7.map集合的两种取出方式?
(1)通过map.keyset,先得到map集合的键,再根据键得到value值
(2)通过map.entrySet直接得到键值对
8.Collection和Conllections的区别?
Conllection是集合类的上级接口,继承他的接口主要有set和list
Conllections是工具类,有很多操作集合的方法.
9.ConcurrentHashMap 的工作原理及代码实现
ConcurrentHashMap引入了分割(Segment)的概念,只对Map的一部分(Segment)进行上锁,这样保证同步的时候,锁住的不是整个map
10.HashCode的方法和作用
hashCode()的作用是获取哈希码,也成为散列码,它实际上是返回一个int整数,这个哈希码的作用是确定该对象在哈希表中的索引位置
不同的对象可能会有相同的hashCode,在比较一个对象是否相等时,首先需要比较对象的hashCode是否相等,其次要比较equals是否相等
因此,equals方法被覆盖过,则hashCode方法也必须被覆盖hashCode()的默认行为是对堆上的对象产生的独特值,如果没有重写hashCode(),
则该class的两个对象无论如何都不会相等.
标签:map,面试题,Java,HashMap,Day03,元素,hashCode,集合,方法 From: https://www.cnblogs.com/carney/p/17029418.html