有人面试总喜欢问比如说HashMap和HashTable有什么区别啊?Vector和ArrayList有什么不同啊。
HashMap和HashTable
=============================
- null 键
* HashMap 允许 null 键
* HashTable 不允许 null 键 - 同步
* HashMap是非同步的,非线程安全的
* HashTable是同步的,线程安全的 - 性能
同步必然影响性能,因此在单线程环境中,HashMap的性能较HashTable更优 - 遍历
HashMap和HashTable中都有以下三个遍历方法:
* values()
* keySet()
* entrySet()
这三个方法都是fail-fast iterator ,就是当Map里有结构性的变化时,就是失败(除了iterator.remove);而在HashTable中除了这三个方法,还有两个方法:
* keys()
* elements()
这两个方法返回的是Enumeration<T>类型,这个方法允许用户在遍历时进行结构性的修改而不抛出异常。 - ConcurrentHashMap
Java 5中提供了除HashTable以外的另一个支持并发的HashMap,并且它的性能较HashTable更好。
ArrayList和Vector
================================
首先讲一下它们的共同点:
- 都是基于数组的,可下标索引的容器
- 都是有序的
- 都支持返回Iterator遍历
- 都支持添加 null 和重复的元素
不同点:
- 同步
* ArrayList 是非同步,非线程安全的
* Vector 是同步的,线程安全的 - 性能
同步带来性能损失,因此在单线程中,ArrayList 比Vector 性能要好 - 遍历
和上面HashTable一样,Vector 有一个elements()方法返回Enumeration,可以在遍历的时候操作列表
相关推荐
- **存储方式**:`List`接口的实现(如`ArrayList`和`Vector`)是有序的,而`Map`接口的实现(如`HashTable`和`HashMap`)是键值对形式,通过键来查找值。 - **数据访问**:`ArrayList`和`Vector`支持通过索引访问...
- HashMap 和 Hashtable 都实现了 Map 接口,HashMap 更快但不是线程安全的,而 Hashtable 是线程安全但较慢。WeakHashMap 则使用弱引用作为键,有助于防止内存泄漏。 - 在选择使用哪种数据结构时,需要考虑性能需求...
比较分析Vector、ArrayList和hashtable hashmap数据结构
ArrayList和Vector,以及HashMap和Hashtable,都是常用的容器,但它们之间存在一些关键的区别,这将影响到在不同场景下的选择和使用。 首先,我们来看ArrayList和Vector的区别: 1. **同步性**: - `ArrayList` ...
List、ArrayList、Vector及map、HashTable、HashMap是Java容器类中的几个重要的接口和实现类,了解它们之间的区别是非常重要的。 首先,我们来看List和ArrayList的区别。List是一个接口,而ArrayList是一个实现了...
在Java编程语言中,`Hashtable` 和 `HashMap` 都是用来存储键值对的数据结构。这两种数据结构虽然相似,但是在实现细节上存在显著差异。 1. **Hashtable**:作为 `Dictionary` 类的子类,`Hashtable` 是 Java 最早...
Vector与ArrayList类似,但它提供了一种线程安全的实现,这意味着在多线程环境中,多个线程可以同时访问和修改Vector,而不会导致数据不一致。然而,由于其同步机制,Vector的性能通常低于ArrayList。 3. Map接口与...
在Java编程语言中,ArrayList、Hashtable和Vector是三种常见的数据结构,它们都用于存储和管理对象,但各有特点和适用场景。以下是对这三个容器的详细解释: ArrayList是Java集合框架中的一部分,它实现了List接口...
List、ArrayList、Vector及map、HashTable是Java中常用的容器类,它们都继承自Collection接口,并提供了不同的实现方式和特点。在实际开发中,选择合适的容器类是非常重要的。 Collection接口是Java中最基本的集合...
ArrayList和Vector都是List接口的实现,但ArrayList在大多数情况下性能优于Vector,因为它的扩容策略更有效。 ArrayList是基于动态数组实现的,其底层源码(JDK 1.7和1.8)显示,它通过在需要时增加数组大小来扩展...
本篇文章主要探讨了两个重要的类集实现:HashMap与Hashtable,以及ArrayList和Vector的区别。 首先,我们来看HashMap与Hashtable的区别: 1. **线程安全性**:HashMap是非线程安全的,它不保证在多线程环境下的...
- 同步性:如同Vector和ArrayList的关系,Hashtable是线程安全的,HashMap则不是。使用HashMap时,如果需要线程安全,可以通过`Collections.synchronizedMap()`方法创建线程安全的HashMap实例。 - 值:HashMap允许...
在本文中,我们将深入理解 HashMap 的实例及其工作原理,并与其他数据结构如 Vector、ArrayList、LinkedList 和 Hashtable 进行对比。 首先,我们来看 HashMap 的实例代码: ```java HashMap hashmap = new ...
HashMap和HashTable的主要区别是HashMap线程不安全,而HashTable线程安全。 HashMap允许键值为null,而HashTable不允许键值为null。HashMap继承自AbstractMap,而HashTable继承自Dictionary。 在选择HashMap还是...
List 中包括 ArrayList、LinkedList、Vector 等,Set 中包括 HashSet、LinkedHashSet 等,Map 中包括 HashMap、Hashtable 等。 List、Set、Map 是否继承自 Collection 接口 List 和 Set 继承自 Collection 接口,...
本资源摘要信息涵盖了 JAVA 程序员笔试面试题汇总及答案,涵盖了基础题、中等题、提高题等多种题型,涉及到访问控制符、ArrayList 和 Vector 的区别、HashMap 和 Hashtable 的区别、Collection 和 Collections 的...
本文将对ArrayList、Vector、LinkedList、Map接口中的HashMap和Hashtable进行总结,帮助读者理解它们的特点和使用场景。 ArrayList和Vector都是基于数组实现的列表,它们都实现了List接口。ArrayList是非线程安全的...
在面试中,常常会考察ArrayList、Vector和LinkedList之间的性能和特性比较。ArrayList和Vector在存储数据时都使用了数组,因此,访问元素的速度快,但插入和删除元素需要移动大量元素,效率较低。而LinkedList通过...