有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在哪里可以找到Java中的文档向量和哈希表?

我知道这个问题可能有点愚蠢,但我只是想澄清这个疑问。 在阅读集合(http://docs.oracle.com/javase/tutorial/collections/index.html)的Java教程时,我没有找到任何关于向量和哈希表的相关信息。两者都属于集合框架,因为向量是列表的实现,哈希表是映射的实现。如果是这样,为什么不在Sun教程中?我在哪里可以找到Sun系列教程,其中包含关于向量和哈希表的良好文档,以及关于列表、集合和映射中存储的元素的深入知识


共 (4) 个答案

  1. # 2 楼答案

    因为VectorHashtable是旧的遗留集合类。不要使用它们

    ArrayList代替Vector;使用HashMap代替Hashtable

    当Java1.2发布时(很久以前),新的集合类被添加到Java(集合框架)。Sun没有删除VectorHashtable等旧类,因为它们希望新的Java版本向后兼容。现在我们仍然有那些旧的课程

    需要注意的一个区别是VectorHashtable是同步的,而ArrayListHashMap不是同步的。大多数时候你不需要同步;如果需要,则必须注意同步ArrayList,如果需要映射,请使用ConcurrentHashMap而不是普通的HashMap

  2. # 3 楼答案

    一般来说,VectorHashtable可被视为不推荐使用

    如果您查看VectorHashtable的在线javadoc,您会发现它们是ArrayListHashMap的原始实现,直到出现了Collections框架,在这一点上,它们被改装以实现来自Collections框架的接口;这样,依赖于这些类存在的旧类就不会中断。它们与更普通的兄弟之间的唯一区别是它们是同步的

    在绝大多数情况下,不需要同步,因此程序员会避免同步开销,选择常规的ArrayListsHashMaps。如果需要一个同步的集合,那么总是有Collections.synchronized____()(或ConcurrentHashMap)可以正常工作

    您可能不需要VectorHashtable的教程,因为它们的行为已经非常类似于您可能熟悉的类,并且不再使用它们。关于{}、{}和{}的更多信息,在线javadoc是从{a3}{a4}到{a5}

  3. # 4 楼答案

    正如Vector的JavaDoc所提到的:

    As of the Java 2 platform v1.2, this class was retrofitted to implement the List interface, making it a member of the Java Collections Framework. Unlike the new collection implementations, Vector is synchronized. If a thread-safe implementation is not needed, it is recommended to use ArrayList in place of Vector.

    它是List接口的一种遗留实现。整个集合框架在默认情况下是非线程安全的。如果需要线程安全,可以使用适当的Collections.synchronizedXXX()方法包装任何非线程安全实现,例如XXXListMapSet。哈希表也是如此,默认情况下也是同步的。您应该改用HashMapCollections.synchonizedMap()