Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ArrayMap与HashMap_Java_Multithreading_Collections_Hashmap - Fatal编程技术网

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
,这就是问题所在。
数组映射
在这里: