Java ArrayMap与HashMap
Java ArrayMap与HashMap,java,multithreading,collections,hashmap,Java,Multithreading,Collections,Hashmap,org.apache.myfaces.trinidad.util.ArrayMap和java.util.HashMap的主要区别是什么 ArrayMap是线程安全的吗 文档中提到了阵列在性能方面是最好的 我不想使用hashmap或并发hashmap。我想试试下面的其他方法。如果考虑线程安全性和性能,哪一个是最好的选择?< /P> ArrayMap<String,String> var= new ArrayMap<String,String>(); ArrayMap v
org.apache.myfaces.trinidad.util.ArrayMap
和java.util.HashMap
的主要区别是什么
ArrayMap是线程安全的吗
文档中提到了阵列在性能方面是最好的
我不想使用hashmap或并发hashmap。我想试试下面的其他方法。如果考虑线程安全性和性能,哪一个是最好的选择?< /P>
ArrayMap<String,String> var= new ArrayMap<String,String>();
ArrayMap var=newarraymap();
HashMap在下面使用了一个数组,因此它永远不会比正确使用数组更快
Random.nextInt()
比正在测试的速度慢很多倍,即使使用数组测试数组也会使结果产生偏差。数组如此慢的原因是由于相等比较,而不是数组访问本身
ArrayList
实现List
接口,HashMap
实现Map
接口。所以真正的问题是什么时候你想使用列表,什么时候你想使用地图。这就是JavaAPI文档帮助很大的地方
列表:
有序集合(也称为序列)。此界面的用户可以精确控制每个元素在列表中的插入位置。用户可以通过其整数索引(列表中的位置)访问元素,并在列表中搜索元素
地图:
将键映射到值的对象。地图不能包含重复的键;每个键最多可以映射到一个值
列表界面(ArrayList)
是一个有序的对象集合,您可以使用索引访问这些对象,非常类似于数组(顾名思义,在ArrayList
的情况下,它只是背景中的一个数组。当您想保持事物的有序性时,可以使用ArrayList
(添加它们的顺序,或者实际上是添加对象时指定的列表中的位置)
HashMap
实现使用密钥对象的哈希值来定位其存储位置,因此不再保证值的顺序。但是,Java API中还有其他类可以提供此功能,例如LinkedHashMap
,它使用哈希表存储密钥/值对,也可以按键的添加顺序插入键列表(LinkedList),以便您始终可以按键的添加顺序(如果需要)再次访问这些项
何时使用阵列?
永远不要低估数组。大多数情况下,当我们必须使用对象列表时,我们倾向于考虑使用向量或列表。但是,如果集合的大小已知且不会改变,则可以将数组视为潜在的数据结构。访问数组元素的速度比访问向量或列表更快。这就是很明显,因为您只需要一个索引,不需要额外的get方法调用
有时,最好结合使用上述方法。例如,您可以使用HashMap的ArrayList来满足特定需要。什么是ArrayMap?提示:它不是Java标准库的一部分。您的上述代码不会编译,没有所谓的
ArrayMap
您的意思是ArrayList
?@PradeepSimha-有一个叫做。只是它不是Java SDK的一部分。我在谷歌的朋友提供了这个类。@R.J谢谢。我不知道:)实际上很多人都提供了它.,.OP需要提到的是,问题中提到的是哪一个?!这很酷..我很想知道这一点…但是当涉及到线程安全时,哪一个是最好的..?Hashmap不是线程安全的,而arraylist是。多线程可以修改的任何内容都应该是线程安全的。因此,如果多个线程可以修改e映射、列表和列表中的对象,那么所有这些都应该有线程安全防护。如果只有映射和列表实例可以同时修改,那么它们只需要线程安全。如果多个线程可以读取所有内容,但不需要修改,那么您就不需要任何线程安全。好的,但这不会将ArrayMap
与Ha进行比较shMap
,这就是问题所在。数组映射
在这里: