# Java 集合面试问题和解答

> 原文： [https://beginnersbook.com/2015/03/java-collections-interview-questions-and-answers/](https://beginnersbook.com/2015/03/java-collections-interview-questions-and-answers/)

之前我在 Java 集合框架上分享了 [100+ 教程](https://beginnersbook.com/java-collections-tutorials/)。在本文中，我将分享有关 Java 集合框架的面试问题。如果您不熟悉集合，我建议您在完成以下问题集之前参考[这些教程](https://beginnersbook.com/java-collections-tutorials/)，因为它们可以帮助您学习集合的基础知识。开始吧…

几乎在每次面试中，您都会被要求解释两个集合类或两个集合界面之间的差异，“差异”问题在访问者中变得如此受欢迎，以至于他们在访谈期间提出了大约 90%的问题。我几乎涵盖了所有常见的收藏差异。他们是：

**Q）`ArrayList`和`Vector`有什么区别？**

A）参考文章：[`Arraylist` vs. `Vector`](https://beginnersbook.com/2013/12/difference-between-arraylist-and-vector-in-java/)

**Q）`ArrayList`和`LinkedList`有什么区别？**

A）参考：[`ArrayList` vs. `LinkedList`](https://beginnersbook.com/2013/12/difference-between-arraylist-and-linkedlist-in-java/)

**问：`HashMap`和`Hashtable`有什么区别？**

A）参考：[`HashMap`与`Hashtable`](https://beginnersbook.com/2014/06/difference-between-hashmap-and-hashtable/)

**问：`HashSet`和`TreeSet`有什么区别？**

A）参考：[`HashSet` vs. `TreeSet`](https://beginnersbook.com/2014/08/difference-between-hashset-and-treeset/)

**问）`ArrayList`和`HashMap`有什么区别？**

A）参考：[`ArrayList` vs. `HashMap`](https://beginnersbook.com/2013/12/difference-between-arraylist-and-hashmap-in-java/)

**问）`List`，`Set`和`Map`接口有什么区别？**

A）参考：[`List`，`Set`和`Map`](https://beginnersbook.com/2015/01/difference-between-list-set-and-map-in-java/)

**问：`Iterator`和`ListIterator`有什么区别？**

A）参考：[`Iterator`和`ListIterator`](https://beginnersbook.com/2014/06/difference-between-iterator-and-listiterator-in-java/`)

**问：`Iterator`和`Enumeraton`有什么区别？**

A）以下是它们之间的一些差异：

1）`Iteator`可用于遗留（`Vector`等）类以及非遗留类（`ArrayList`，`LinkedList`等），而枚举基本上用于传统类，如`Vector`。

2）迭代器比枚举慢。

3）迭代器是失败快速的，而枚举则不是。

**Q）如何同步`HashMap`？**

A）参考：[`HashMap`同步](https://beginnersbook.com/2013/12/how-to-synchronize-hashmap-in-java-with-example/)。

**Q）如何同步`ArrayList`？**

A）参考：[`ArrayList`同步](https://beginnersbook.com/2013/12/how-to-synchronize-arraylist-in-java-with-example/)。

**问：故障快速和故障安全有什么区别？**

A）当底层集合中存在结构修改时，快速失败的`Iterator`抛出`ConcurrentModificationException`，而故障安全的`Iterator`，在检测到结构修改时不会抛出任何异常，因为故障安全迭代器与底层集合的克隆一起工作。

**Q）如何将数组转换为`ArrayList`？**

A）参考：[数组到`ArrayList`的转换](https://beginnersbook.com/2013/12/how-to-convert-array-to-arraylist-in-java/)。

**问）如何从`ArrayList`中删除重复的元素？**

A）参考[本教程](https://beginnersbook.com/2014/10/how-to-remove-repeated-elements-from-arraylist/)。

**Q）如何循环`ArrayList`？**

A）参考[本教程](https://beginnersbook.com/2013/12/how-to-loop-arraylist-in-java/)。