`
liugang594
  • 浏览: 987548 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

HashMap对HashTable和ArrayList对Vector

 
阅读更多

有人面试总喜欢问比如说HashMap和HashTable有什么区别啊?Vector和ArrayList有什么不同啊。

 

HashMap和HashTable

=============================

  1. null 键
    * HashMap 允许 null 键
    * HashTable 不允许 null 键
  2. 同步
    * HashMap是非同步的,非线程安全的
    * HashTable是同步的,线程安全的
  3. 性能
    同步必然影响性能,因此在单线程环境中,HashMap的性能较HashTable更优
  4. 遍历
    HashMap和HashTable中都有以下三个遍历方法:
    * values()
    * keySet()
    * entrySet()
    这三个方法都是
    fail-fast iterator ,就是当Map里有结构性的变化时,就是失败(除了iterator.remove);而在HashTable中除了这三个方法,还有两个方法:
    * keys()
    * elements()
    这两个方法返回的是Enumeration<T>类型,这个方法允许用户在遍历时进行结构性的修改而不抛出异常。
  5. ConcurrentHashMap
    Java 5中提供了除HashTable以外的另一个支持并发的HashMap,并且它的性能较HashTable更好。

ArrayList和Vector

================================

首先讲一下它们的共同点:

  1. 都是基于数组的,可下标索引的容器
  2. 都是有序的
  3. 都支持返回Iterator遍历
  4. 都支持添加 null 和重复的元素
不同点:
  1. 同步
    * ArrayList 是非同步,非线程安全的
    * Vector 是同步的,线程安全的
  2. 性能
    同步带来性能损失,因此在单线程中,ArrayList 比Vector 性能要好
  3. 遍历
    和上面HashTable一样,Vector 有一个elements()方法返回Enumeration,可以在遍历的时候操作列表
分享到:
评论

相关推荐

    经典讲解List和ArrayList和Vector和HashTable和HashMap区别

    - **存储方式**:`List`接口的实现(如`ArrayList`和`Vector`)是有序的,而`Map`接口的实现(如`HashTable`和`HashMap`)是键值对形式,通过键来查找值。 - **数据访问**:`ArrayList`和`Vector`支持通过索引访问...

    比较Vector、ArrayList和hashtable hashmap

    - HashMap 和 Hashtable 都实现了 Map 接口,HashMap 更快但不是线程安全的,而 Hashtable 是线程安全但较慢。WeakHashMap 则使用弱引用作为键,有助于防止内存泄漏。 - 在选择使用哪种数据结构时,需要考虑性能需求...

    比较分析Vector、ArrayList和hashtable hashmap数据结构

    比较分析Vector、ArrayList和hashtable hashmap数据结构

    浅析java中ArrayList与Vector的区别以及HashMap与Hashtable的区别

    ArrayList和Vector,以及HashMap和Hashtable,都是常用的容器,但它们之间存在一些关键的区别,这将影响到在不同场景下的选择和使用。 首先,我们来看ArrayList和Vector的区别: 1. **同步性**: - `ArrayList` ...

    List、ArrayList、Vector及map、HashTable、HashMap分别的区别

    List、ArrayList、Vector及map、HashTable、HashMap是Java容器类中的几个重要的接口和实现类,了解它们之间的区别是非常重要的。 首先,我们来看List和ArrayList的区别。List是一个接口,而ArrayList是一个实现了...

    Hashtable和HashMap的区别:

    在Java编程语言中,`Hashtable` 和 `HashMap` 都是用来存储键值对的数据结构。这两种数据结构虽然相似,但是在实现细节上存在显著差异。 1. **Hashtable**:作为 `Dictionary` 类的子类,`Hashtable` 是 Java 最早...

    Java中List、ArrayList、Vector及map、HashTable、HashMap分别的区别.

    Vector与ArrayList类似,但它提供了一种线程安全的实现,这意味着在多线程环境中,多个线程可以同时访问和修改Vector,而不会导致数据不一致。然而,由于其同步机制,Vector的性能通常低于ArrayList。 3. Map接口与...

    Arraylist、Hashtable、Vector

    在Java编程语言中,ArrayList、Hashtable和Vector是三种常见的数据结构,它们都用于存储和管理对象,但各有特点和适用场景。以下是对这三个容器的详细解释: ArrayList是Java集合框架中的一部分,它实现了List接口...

    Java容器类List、ArrayList、Vector及map、HashTable应用

    List、ArrayList、Vector及map、HashTable是Java中常用的容器类,它们都继承自Collection接口,并提供了不同的实现方式和特点。在实际开发中,选择合适的容器类是非常重要的。 Collection接口是Java中最基本的集合...

    对java基础集合部分(List、HashMap、HashSet、ArrayList等)底层源码的分析与总结

    ArrayList和Vector都是List接口的实现,但ArrayList在大多数情况下性能优于Vector,因为它的扩容策略更有效。 ArrayList是基于动态数组实现的,其底层源码(JDK 1.7和1.8)显示,它通过在需要时增加数组大小来扩展...

    各种类集 的区别1

    本篇文章主要探讨了两个重要的类集实现:HashMap与Hashtable,以及ArrayList和Vector的区别。 首先,我们来看HashMap与Hashtable的区别: 1. **线程安全性**:HashMap是非线程安全的,它不保证在多线程环境下的...

    ArrayList数组列表[借鉴].pdf

    - 同步性:如同Vector和ArrayList的关系,Hashtable是线程安全的,HashMap则不是。使用HashMap时,如果需要线程安全,可以通过`Collections.synchronizedMap()`方法创建线程安全的HashMap实例。 - 值:HashMap允许...

    hashmap 实例

    在本文中,我们将深入理解 HashMap 的实例及其工作原理,并与其他数据结构如 Vector、ArrayList、LinkedList 和 Hashtable 进行对比。 首先,我们来看 HashMap 的实例代码: ```java HashMap hashmap = new ...

    农行研发中心-校招常见面试题汇总.pdf

    HashMap和HashTable的主要区别是HashMap线程不安全,而HashTable线程安全。 HashMap允许键值为null,而HashTable不允许键值为null。HashMap继承自AbstractMap,而HashTable继承自Dictionary。 在选择HashMap还是...

    java集合类面试题总结

    List 中包括 ArrayList、LinkedList、Vector 等,Set 中包括 HashSet、LinkedHashSet 等,Map 中包括 HashMap、Hashtable 等。 List、Set、Map 是否继承自 Collection 接口 List 和 Set 继承自 Collection 接口,...

    JAVA程序员笔试面试题汇总及答案.pdf

    本资源摘要信息涵盖了 JAVA 程序员笔试面试题汇总及答案,涵盖了基础题、中等题、提高题等多种题型,涉及到访问控制符、ArrayList 和 Vector 的区别、HashMap 和 Hashtable 的区别、Collection 和 Collections 的...

    java collection总结-流氓版

    本文将对ArrayList、Vector、LinkedList、Map接口中的HashMap和Hashtable进行总结,帮助读者理解它们的特点和使用场景。 ArrayList和Vector都是基于数组实现的列表,它们都实现了List接口。ArrayList是非线程安全的...

    java常用集合框架.pdf

    在面试中,常常会考察ArrayList、Vector和LinkedList之间的性能和特性比较。ArrayList和Vector在存储数据时都使用了数组,因此,访问元素的速度快,但插入和删除元素需要移动大量元素,效率较低。而LinkedList通过...

Global site tag (gtag.js) - Google Analytics