Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.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 何时使用安卓&x27;是ArrayMap而不是HashMap?_Java_Android - Fatal编程技术网

Java 何时使用安卓&x27;是ArrayMap而不是HashMap?

Java 何时使用安卓&x27;是ArrayMap而不是HashMap?,java,android,Java,Android,Android有自己的HashMap实现,它不使用自动装箱,而且在性能(CPU或RAM)方面更好 从我在这里读到的内容来看,如果HashMap的大小小于数百条记录,并且经常被写入,那么我应该用ArrayMap对象替换HashMap对象。如果我的HashMaps包含数百个对象,并且将被一次写入并频繁读取,那么用ArrayMaps替换我的HashMaps是没有意义的。我说的对吗?您有什么理由尝试这样的替换吗 如果是为了提高性能,那么你必须在更换前后采取措施,看看更换是否有帮助 可能不值得努力。您有

Android有自己的HashMap实现,它不使用自动装箱,而且在性能(CPU或RAM)方面更好


从我在这里读到的内容来看,如果HashMap的大小小于数百条记录,并且经常被写入,那么我应该用ArrayMap对象替换HashMap对象。如果我的HashMaps包含数百个对象,并且将被一次写入并频繁读取,那么用ArrayMaps替换我的HashMaps是没有意义的。我说的对吗?

您有什么理由尝试这样的替换吗

如果是为了提高性能,那么你必须在更换前后采取措施,看看更换是否有帮助


可能不值得努力。

您有什么理由尝试这样的替换吗

如果是为了提高性能,那么你必须在更换前后采取措施,看看更换是否有帮助


可能不值得努力。

您应该看看这段视频:
完美情境:
1.具有大量访问或插入和删除的少量项(<1000)很少,因此没有真正注意到这样做的开销

2.地图容器-地图的地图,其中子地图往往具有较少的项目数,并且经常会重复很多时间。

您应该看看这个视频:
完美情境:
1.具有大量访问或插入和删除的少量项(<1000)很少,因此没有真正注意到这样做的开销

2.映射容器-映射的映射,其中子映射往往具有较少的项目数,并且经常迭代很多时间。

ArrayMap使用的内存比HashMap少得多,建议最多用于几百个项目,尤其是在映射不经常更新的情况下。花费更少的时间分配和释放内存也可以提高总体性能


更新性能稍差,因为任何插入都需要阵列副本。少量项目的读取性能相当,并使用二进制搜索。

ArrayMap使用的内存比HashMap少得多,建议最多使用几百个项目,尤其是在地图不经常更新的情况下。花费更少的时间分配和释放内存也可以提高总体性能


更新性能稍差,因为任何插入都需要阵列副本。少量项目的读取性能相当,并且使用二进制搜索。

哪个不使用自动装箱,您在哪里读到的?它将其映射保存在数组数据结构中——每个项的哈希代码的整数数组和键/值对的对象数组。这使得它不必为地图中的每个条目创建额外的对象ArrayMap存储键和值的对象引用,因此它不会阻止装箱。与SparseArray类相反,SparseArray类可以通过存储基元类型来防止对键和/或值进行装箱。文档说明的是,与HashMap类相比,ArrayMap不会为每个键值对创建任何“Map.Entry”中间对象。请记住,
ArrayMap
不是
Serializable
,它不使用自动装箱,您在哪里读到的?它将其映射保存在数组数据结构中——每个项的哈希代码的整数数组和键/值对的对象数组。这使得它不必为地图中的每个条目创建额外的对象ArrayMap存储键和值的对象引用,因此它不会阻止装箱。与SparseArray类相反,SparseArray类可以通过存储基元类型来防止对键和/或值进行装箱。文档说明的是,与HashMap类相比,ArrayMap不会为每个键值对创建任何“Map.Entry”中间对象。请记住,
ArrayMap
不是可序列化的