1.开发中Java用了比较多的数据结构有哪些?
2.谈谈你对HashMap的理解,底层原理的基本实现,HashMap怎么解决碰撞问题?这些数据结构中都是线程安全的吗?假如你回答的是线程安全的,接着问你有没有线程安全的map,接下来问了conurren包
HashMap是程序员使用频率最高的关于映射(键值对)处理的数据类型,随着JDK(1.8)对HashMap的底层实现了优化,比如引入了红黑树的数据结构和扩容优化等,
HashMap利用hashcode的值存储数据,大多数情况下可以定义到具体的位置所以有很快的访问速度,但是遍历顺序却是不确定的。HashMap的键可以为null但是只能有一条键为null的数据,允许多条记录的值为null。HashMap是非线程安全的即任一时刻可以多个线程同时写入数据,可能导致数据的不一致
hash碰撞:对象hash的前提是实现hashcode()和equals()方法,hashcode()是保证对象返回唯一的hash值,当两个对象返回相同的hash值时就发生了hash碰撞。解决方法:①在hash法,用姓的首字母进行比较,如果首字母相同在比较第二个依次比较。缺点:计算时间增加。②开放地址法,开放地址法有一个公式:Hi=(H(key)+di) MOD m i=1,2,…