在哪里可以找到Java中的文档向量和哈希表?
我知道这个问题可能有点愚蠢,但我只是想澄清这个疑问。 在阅读集合(http://docs.oracle.com/javase/tutorial/collections/index.html)的Java教程时,我没有找到任何关于向量和哈希表的相关信息。两者都属于集合框架,因为向量是列表的实现,哈希表是映射的实现。如果是这样,为什么不在Sun教程中?我在哪里可以找到Sun系列教程,其中包含关于向量和哈希表的良好文档,以及关于列表、集合和映射中存储的元素的深入知识
# 1 楼答案
这里有一些有用的链接 http://javarevisited.blogspot.com/2010/10/difference-between-hashmap-and.html
http://javarevisited.blogspot.com/2011/09/difference-vector-vs-arraylist-in-java.html
# 2 楼答案
因为
Vector
和Hashtable
是旧的遗留集合类。不要使用它们用
ArrayList
代替Vector
;使用HashMap
代替Hashtable
当Java1.2发布时(很久以前),新的集合类被添加到Java(集合框架)。Sun没有删除
Vector
和Hashtable
等旧类,因为它们希望新的Java版本向后兼容。现在我们仍然有那些旧的课程需要注意的一个区别是
Vector
和Hashtable
是同步的,而ArrayList
和HashMap
不是同步的。大多数时候你不需要同步;如果需要,则必须注意同步ArrayList
,如果需要映射,请使用ConcurrentHashMap
而不是普通的HashMap
# 3 楼答案
一般来说,
Vector
和Hashtable
可被视为不推荐使用如果您查看Vector和Hashtable的在线javadoc,您会发现它们是
ArrayList
和HashMap
的原始实现,直到出现了Collections框架,在这一点上,它们被改装以实现来自Collections框架的接口;这样,依赖于这些类存在的旧类就不会中断。它们与更普通的兄弟之间的唯一区别是它们是同步的在绝大多数情况下,不需要同步,因此程序员会避免同步开销,选择常规的
ArrayLists
和HashMaps
。如果需要一个同步的集合,那么总是有Collections.synchronized____()
(或ConcurrentHashMap
)可以正常工作您可能不需要}、{}和{}的更多信息,在线javadoc是从{a3}{a4}到{a5}
Vector
和Hashtable
的教程,因为它们的行为已经非常类似于您可能熟悉的类,并且不再使用它们。关于{# 4 楼答案
正如Vector的JavaDoc所提到的:
它是
List
接口的一种遗留实现。整个集合框架在默认情况下是非线程安全的。如果需要线程安全,可以使用适当的Collections.synchronizedXXX()
方法包装任何非线程安全实现,例如XXX
是List
或Map
或Set
。哈希表也是如此,默认情况下也是同步的。您应该改用HashMap
和Collections.synchonizedMap()