【置顶】Java集合的相关面试题
1. Collection 和 Collections 的区别?
- Collection 是一个接口,它是 Set、List、等容器的父接口;
- Collections 是一个工具类,提供了一系列的静态方法来辅助容器操作,这些方法包括对容器的搜索、排序、线程安全化等等。
2.HashMap 和 HashTable 的区别?
- HashMap没有考虑同步,是线程不安全的;
- Hashtable使用了synchronized关键字,是线程安全的;
- HashMap允许K/V都为null;后者K/V都不允许为null;
- HashMap继承自AbstractMap类;而Hashtable继承自Dictionary类;
3.为什么HashMap中String、Integer这样的包装类适合作为K?
- String、Integer等包装类的特性能够保证Hash值的不可更改性和计算准确性,能够有效的减少Hash碰撞的几率。
- 都是final类型,即不可变性,保证key的不可更改性,不会存在获取hash值不同的情况;
- 内部已重写了
equals()、hashCode()等方法,遵守了HashMap内部的规范,不容易出现Hash值计算错误的情况;
4.Array 和 ArrayList 有什么区别?
- Array 可以包含基本类型和对象类型,ArrayList 只能包含对象类型;
- Array 大小是固定的,ArrayList 的大小是动态变化的;
- ArrayList 提供了更多的方法和特性,比如:addAll(),removeAll(),iterator() 等等;
转载 https://www.jianshu.com/p/939b8a672070

浙公网安备 33010602011771号