【置顶】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
posted @ 2020-12-25 17:07  有梦想的哆啦  阅读(45)  评论(0)    收藏  举报